在古代的時候,人們身上穿的衣服其實是人們自己使用織布機織的,隨著社會的發展,一直到了現代社會,我們身上穿的衣服基本上都是在工廠裡面做好了,直接拿到市面上去賣就好了,對於我們身上的衣服而言,由一開始的手工製作再到今天的工廠生產,這就是工廠模式。
一、認識工廠模式
工廠模式主要分為三個:
(1)簡單工廠模式:我們的衣服在工廠裡面去建造,這就是簡單工廠模式
(2)工廠方法模式:隨著社會的發展,使用者現在想要一身黑色的衣服、也想要一身紅色的衣服。於是乎,我們開始定義乙個總廠,下面有很多具體的工廠來生產不同顏色的衣服。
(3)抽象工廠模式時代:隨著客戶的要求越來越高,不同顏色衣服還要帶各種顏色的帽子去搭配。於是這個工廠又開始生產衣服又要去生產帽子。
我們這裡所說的工廠模式就是指的前兩種:簡單工廠模式和工廠方法模式
二、手動織布時代
我們先用一張圖來看一下手動織布時代的關係:
第一步:有乙個cloth類
public
class
cloth
}
第二步:人們要想使用,需要手動去new出乙個
public
class
user
手動織布時代樣子很簡單,但是時間久了,人越來越多,衣服也會越來越多,我們建立的物件也會越來越多,**會顯得格外臃腫。於是乎,人們開始建立了工廠,我們不必關係自己如何去生產布匹,而是交給工廠
三、簡單工廠時代
我們在使用一張圖來表示:
從上面我們可以看到簡單工廠模式主要有四個角色:
(1)客戶(user):用來指定生產什麼衣服,提要求的
(2)工廠(factory):生產所有衣服的工廠
(3)抽象產品(abstract product):定義所有衣服的抽象類,可以描寫所有衣服的共同屬性
(4)具體產品(product):抽象衣服的具體實現
下面我們**來實現一下:
第一步:定義抽象類
abstract
class
cloth
}
第二步:具體產品類
public
class
redcloth
extends
cloth
}
還有黑色衣服:
public
class
blackcloth
extends
cloth
}
第三步:工廠類
public
class
clothfactory
return null;
}}
第四步:使用者
public
class
user
}
四、工廠方法模式隨著社會的發展,發現使用者需要衣服的顏色也開始變得越來越多了,一般都是花裡胡哨的那些,這時候有就麻煩了,因為每次新增加一種顏色的衣服時候,我們都需要在工廠裡面新增乙個新的case語句。這樣顏色越來越多,工廠類開始變得臃腫起來。於是為了不違背開閉原則,開始對工廠類有乙個劃分。
下面使用一張圖來表示一下:
從上面我們可以看到主要有五個角色:
(1)使用者:提需求,使用衣服
(2)工廠介面:我們不再乙個工廠去生產所有衣服了,而是定義乙個抽象介面,這樣有新的需求的時候,我們就可以把這些工廠的共同操作提取出來
(3)具體工廠:具體工廠對職責又進行了細化分,每乙個工廠只負責一種產品
(4)抽象產品:產品的所有抽象類
(5)具體產品:具體的每一種衣服。
下面看**的具體實現:
第一步:定義乙個抽象產品類cloth
abstract
class
cloth
}
第二步:具體的產品類
public
class
redcloth
extends
cloth
}
還有黑色衣服
public
class
blackcloth
extends
cloth
}
第三步:工廠介面
inte***ce
clothfactory
第四步:具體工廠
public
class
redclothfactory
implements
clothfactory
}
還有乙個黑色衣服工廠
public
class
blackclothfactory
implements
clothfactory
}
第五步:使用者
public
class
user
}
其實現在還不能滿足我們的需求,因為隨著時代的發展,人們的需求變得更加複雜,比如說我紅色衣服要10000件,但是黑色衣服只需要10件,這樣的差別實在太大了,而我們仍然需要建造乙個工廠。而且,還有一些使用者買衣服的時候還需要選擇是不是再購買一雙鞋子。所以上面的這個模式能夠解決一些簡單的情況,但是比較複雜的情況依然不能解決。
不過辦法總是比問題要多,下一遍部落格主要就是解決這個問題,也就是抽象工廠模式。
ok,今天的博文先到這,如有問題還請批評指正:
但是黑色衣服只需要10件,這樣的差別實在太大了,而我們仍然需要建造乙個工廠。而且,還有一些使用者買衣服的時候還需要選擇是不是再購買一雙鞋子。所以上面的這個模式能夠解決一些簡單的情況,但是比較複雜的情況依然不能解決。
不過辦法總是比問題要多,下一遍部落格主要就是解決這個問題,也就是抽象工廠模式。
ok,今天的博文先到這,如有問題還請批評指正:
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...