一、簡單工廠(****** factory)
集中管理物件的產生,業務**只需要呼叫相應的方法,
傳入不同的引數區分物件,就能得到想要的物件了
把業務**和對應的物件解耦
建立乙個抽象類
public
abstract
class cellphone
public
abstract
void
show();
}
建立實現抽象類的實體類
第乙個實體類:
public
class
huaweiphone
extends
cellphone
@override
public
void
show()
}第二個實體類:
public
class
xiaomipohone
extends
cellphone
@override
public
void
show()
}
enum phonetype
建立乙個簡單工廠類
class factory
return
null;}}
使用該工廠,通過傳遞型別資訊來獲取實體類的物件:
優點:1、乙個呼叫者想建立乙個物件,只要知道其名稱就可以了。 2、擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以。 3、遮蔽產品的具體實現,呼叫者只關心產品的介面。
缺點:每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。不符合軟體設計的開-閉原則 ,對工廠的**修改無法關閉。
二、工廠方法(factory method )
解決了簡單工廠存在的缺點
優點:把工廠**對修改關閉了,新增新的產品,建立新的工廠模式就可以繼承factory就可以了。
缺點:不能良好地解決有依賴關係的一組物件的建立, 短時間內造成大量工廠產生。
建立乙個抽象類
public
abstract
class cellphone
public
abstract
void
show();
}
抽象類的實現類
第乙個實現類
public
class
huaweiphone
extends
cellphone
@override
public
void
show()
}第二個實現類
public
class
xiaomipohone
extends
cellphone
@override
public
void
show()
}
建立乙個工廠類
abstract
class
factory
class
xiaomifactory
extends
factory
}class
huaweifactory
extends
factory
}
使用該工廠
public
class factorytest
}
工廠方法:
好處:把工廠**對修改關閉了,新增新的產品,建立新的工廠繼承factory就行了
不好:不能良好的解決,有依賴關係的一組物件的建立
三、抽象工廠(abstract factory )
在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供物件。
介紹意圖:提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。
主要解決:解決了一類沒在乙個繼承關係上,但是產品之間有依賴關係的一組物件的建立
何時使用:系統的產品有多於乙個的產品族,而系統只消費其中某一族的產品。
如何解決:在乙個產品族裡面,定義多個產品。
關鍵**:在乙個工廠裡聚合多個同類產品。
實現:
在之前的工廠方法上,新增加乙個類,相當於給工廠類增加一種產品
之前的生產手機**不變,現在要讓工廠再生產運動手環
運動手環抽象類
abstract
class
sportcircle
public
abstract
void show();
}class
misportcircle
extends
sportcircle
@override
public
void show()
}class
huaweisportcircle
extends
sportcircle
@override
public
void show()
}
抽象工廠
abstract
class
abstractfactory
class
xiaomifactory
extends
abstractfactory
@override
public sportcircle createcircle(string name)
}class
huaweifactory
extends
abstractfactory
@override
public sportcircle createcircle(string name)
}
使用該工廠
簡單工廠,工廠方法,抽象工廠
簡單工廠,工廠方法,抽象工廠都屬於設計模式中的建立型模式。其主要功能都是幫助我們把物件的例項化部分抽取了出來,優化了系統的架構,並且增強了系統的擴充套件性。本文是本人對這三種模式學習後的乙個小結以及對他們之間的區別的理解。簡單工廠 簡單工廠模式的工廠類一般是使用靜態方法,通過接收的引數的不同來返回不...
簡單工廠 工廠方法 抽象工廠
簡單工廠 乙個工廠類 根據傳入的參量決定建立出哪一種產品類的例項 直接乙個工廠類,內部通過 swith operator add類實現該介面 adddao implements dao dao的實現類 客戶端 dao dao new adddao dao.createoper 產生物件 這樣如果需要...
簡單工廠 工廠方法 抽象工廠
簡單工廠 factory pattern 簡單工廠模式,把物件 統一介面 的建立封裝起來,而不去用了解物件所代表的真正的實現類及其初始化過程。我們只需要把引數傳遞給簡單工廠,工廠就會根據你的需要返回相應的產品物件。示例 如下 這樣做的好處就是把耦合放進了factory,呼叫方和product不再耦合...