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