前幾天寫了個單例模式,反響平平,多是由於網上的設計模式實在是爛大街了,沒法get到讀者的點,不過也算是本身對本身知識的總結,今天咱們換種角度來講一下這個工廠模式,工廠模式,目前主要的有三種,簡單工廠,普通工廠,抽象工廠模式,今天咱們就不談抽象工廠模式了,咱們來講說簡單工廠和普通工廠的設計模式。今天咱們要引入另一個主角,他的名字就是——小陳。設計模式
小陳是個設計師,他很喜歡本身作些小玩意,那些小玩意都很精美,有一天,他的好朋友來家裏玩,看到了小陳作的那些小東西,喜歡的不得了,就紛紛拜託小陳作些小玩意給他,小陳平時古道熱腸,一口應承,等到朋友走了以後,他的頭就有點大了,小陳目前擅長作的小玩意是,玻璃杯,騎士隊隊徽,祖傳手機殼.....,而他的那幾個好朋友都但願拿到這三個,並且有十個好朋友想要,又答應了別人,小陳頭很大,可是既然答應別人了,就要作到了,而後小陳就開始作了。代碼大體以下:ide
1 public void xiaoChenMake(){ 2 for(int i=0;i<10;i++){ 3 xiaochen.doGlass(); 4 xiaochen.doPhoneShell(); 5 xiaochen.doChopsticks(); 6 } 7 }
這樣子小陳花了一週作完了十人份的用品,這可把小陳累壞了,可是朋友們拿到都很開心,雖知道一傳十十傳百,由於小陳作的騎士隊隊徽....祖傳手機殼....太過於精美,致使有愈來愈多的人慕名而來請小陳作,甚至有人不惜出高價但願拿到祖傳手機殼技術,由於恰好跟本身的祖傳手機貼膜的祕方結合。。。這可愁懷了小陳了,這時候有人提建議了,讓小陳將本身的技術作大作強,批量生產,開網店,作微商,出任CEO,迎娶白富美,說的小陳有點小激動的時候,小陳心想,這要批量生產的話,確定要找個工廠來生產啊,這時候小陳就出外聯繫廠商合做了,可是因爲小陳是個體經營,大工廠嫌小陳作的東西太少,不願接手他的項目,不得已.....小陳只好去找小工廠來作了,小陳千辛萬苦找到了一家小工廠願意接手本身的生產需求,因而小陳就把本身的圖紙交給了這家小工廠來生產,兩天以後,就已經生產出來了300套人份的產品了,小陳好奇,他們是怎麼這麼快作出來的。spa
小陳這時候進去工廠裏面一看,原來他們把圖紙放到機器裏,而後機器會根據不一樣的圖紙來生產出不一樣的產品。具體代碼以下:設計
由於手機殼,杯子,騎士隊隊徽都是由設計圖紙過來的,咱們挑一個來看,圖紙至關於一個產品接口,一切都須要從這個接口(圖紙)而來,3d
1 public interface Product { 2 public void make(); 3 }
騎士隊徽也是個產品,須要有產品的圖紙,這個圖紙就是Product的接口,code
1 public class CavaliersBadg implements Product{ 2 @Override 3 public void make() { 4 System.out.println("騎士隊徽被作出來了!"); 5 } 6 }
而這個小做坊工廠的代碼以下:blog
1 public class SimpleFactory { 2 3 private SimpleFactory(){} 4 5 public static Product getProduct(String productName){ 6 if("Glass".equals(productName)){ 7 return new Glass(); 8 }else if("PhoneShell".equals(productName)){ 9 return new PhoneShell(); 10 }else if("CavaliersBadg".equals(productName)){ 11 return new PhoneShell(); 12 } 13 return null; 14 } 15 }
由於工廠並非每一個人都能擁有的,確定是不能被自定義生產的,因此必須是私有的,這時候咱們只須要傳入圖紙的名稱,這個小工廠就會根據圖紙獲得產品,固然了,沒有圖紙的產品,固然是不可生產的,因此返回的固然也是null產品嘍。接口
大體的類圖以下圖片
(圖片來自於百度百科)get
小陳看着這一會兒,這三種產品一會兒就出來,小陳很是開心,急急忙忙的想擴大產品線,火急火燎的又設計了不少種產品的設計圖,當他又把20種產品設計圖交給這個小工廠的時候,小工廠茫茫然的搖了搖頭,原來他們的工廠沒法支撐生產這麼多的產品,由於每次若是要往工廠裏面添加圖紙的時候,就要把整個生產線給拆了從新改造一遍(違反了軟件設計中的開閉原則),這讓小陳很頭大,這一時讓着20種產品的設計圖紙毫無用武無之地,可是目前暫時有了這三種產品,小陳就趕忙把這三種產品擺上了貨架,先當算看看銷量如何再進一步進行打算。
欲知下回如何,且聽下文分解。