最近在瀏覽《大話設(shè)計(jì)模式》,其中在第12章就引出了“工廠模式”跟“策略模式”兩種設(shè)計(jì)模式,但是可能由于我第1次瀏覽和學(xué)習(xí)有關(guān)設(shè)計(jì)模式的知識,對這兩種設(shè)計(jì)模式的實(shí)現(xiàn)方式產(chǎn)生了混淆了,有點(diǎn)頭暈,不怎樣好理解他們之間的區(qū)分,在反復(fù)看了書中的例子跟上網(wǎng)查閱了許多先輩門關(guān)于這兩種模式的文章和博客以后,終究有了那末1絲絲的感覺。
主要差異:
1、作用
工廠模式主要的用處是創(chuàng)建對象,根據(jù)在客戶端傳入1個(gè)數(shù)據(jù),在工廠類中創(chuàng)建相應(yīng)的對象,然后返回給客戶端,它使對象的創(chuàng)建獨(dú)立于使用對象的客戶,它屬于創(chuàng)建型模型;
策略模式主要用于選擇策略方法,在客戶端中根據(jù)你所選擇的行動(dòng)或策略創(chuàng)建1個(gè)對象。策略模式就是為了解決策略的切換和擴(kuò)大,它定義了策略族,并將它們封裝起來,策略模式將策略的變換獨(dú)立于使用策略的客戶,它屬于行動(dòng)型模型;
2、關(guān)注點(diǎn)
工廠模式關(guān)注的是對象的創(chuàng)建
策略模式關(guān)注的是行動(dòng)的封裝
另外在這里援用兩個(gè)我在CSDN的帖子里面看到認(rèn)為比較能讓我找到感覺的例子,在此非常感覺寫出這個(gè)例子的大神。
1、
女人有很多種,基本都會(huì)生孩子。(不要在乎例子本身不雅,注意體會(huì)其含義)
1、找個(gè)會(huì)生孩子的身材好的女人。(如何找的邏輯就交給女人工廠了,客戶端只要得到女人就能夠了)。
2、找個(gè)身材好的女人代孕生個(gè)孩子,固然到最后只要孩子不要女人。(如何在多種女人中找個(gè)身材好的女人代孕生孩子是策略類的職責(zé),最后策略類只要把孩子交給客戶端便可)。
2、
工廠模式:根據(jù)你給出的目的來生產(chǎn)不同用處的斧子,例如要砍人,那末工廠生產(chǎn)砍人斧子,要伐木就生產(chǎn)伐木斧子。即根據(jù)你給出1些屬性來生產(chǎn)不同行動(dòng)的1類對象返回給你。關(guān)注對象創(chuàng)建
策略模式:用工廠生產(chǎn)的斧子來做對應(yīng)的事情,例如用砍人的斧子來砍人,用伐木的斧子來伐木。即根據(jù)你給出對應(yīng)的對象來履行對應(yīng)的方法。關(guān)注行動(dòng)的選擇