天天看點

設計模式之 -----工廠模式二

我來更新了,哈哈。。。沒有人看呢。自己給自己點了一個贊之後又取消了,哈哈。接下來開始正題

工廠方法:

可以說工廠方法是簡單工廠的更新版,就是我的列子一樣,如果我想加入一個看好的品牌手機,比如小米。我就需要改動我的原有代碼。是以說簡單工廠違背了OCP原則(開閉原則)如果你還不知道六大原則的話,你可以找些資料看下,或是找我要資料都可以的,我還有沒具體去看,去學習。是以我就不引出這些東西了。

而工廠方法很好的解決了這個問題,下面看下我的demo吧,還是以昨天的那個列子來說

設計模式之 -----工廠模式二

建立了一個華為手機品牌,哈哈感覺自己馬上就是世界首付了

設計模式之 -----工廠模式二

光有品牌還不行啊,必須得有工廠來生産啊

設計模式之 -----工廠模式二

又建立了一個oppo手機,我膨脹了。。不屑代碼了,賣手機去啦。。

設計模式之 -----工廠模式二
設計模式之 -----工廠模式二

還有一個品牌,其實結構都是一樣的,就式一個品牌一個工廠,好像生活中也是這樣的,隻不過可能很多品牌都是由一個代工工廠生産的,列如富士康。。那就不寫那個品牌了,下面看一下測試的結果吧

設計模式之 -----工廠模式二

不知道各位小夥伴對這個工廠方法是怎麼了解的,其實我個人覺得就是針對一個每一個品牌都需要一個獨立的工廠,這樣如果有新牌子的品牌的話,我隻是再去增加這個品牌的手機跟工廠,兩個類就做到了OCP但是它也有自身的缺陷,你有沒有發現建立的類跟接口過多啊,這樣還是比較麻煩的。

下面我們再來看看

抽象工廠:

抽象工廠就有點想代理工廠了,我把手機中的零件作為産品族,其實也就是手機中需要的零件,這樣的話就可以不用像工廠方法那樣,有多少個品牌就要建立多少個工廠了,我隻需要根據零件去建立工廠然後把他們組裝都一起,就成了一個手機。然後再貼上各自的品牌,就可以賣了。

CPU零件必不可少,我分别建立了高低端兩種CPU

設計模式之 -----工廠模式二

還有像素,其實也就是相機啦。不要太在意細節哈。也是高低端兩種

設計模式之 -----工廠模式二

手機工廠肯定避免不了的

設計模式之 -----工廠模式二

還有兩個高低端的手機工廠

設計模式之 -----工廠模式二
設計模式之 -----工廠模式二

接下來看看測試的結果吧

設計模式之 -----工廠模式二

由于代碼非常的簡單,是以我也沒有添加注釋。下面再來說一下我對抽象工廠的了解吧,我個人覺得抽象工廠比較複雜,但是它對産品族添加來說是可以滿足的,也滿足了OCP原則。但是對添加單個産品的話就顯得有些雞肋了。

不知道你是怎麼了解的呢?請留下你的想法

繼續閱讀