作用:實現了建立者和呼叫者分離
詳細分類:簡單工廠模式、工廠方法模式、抽象工廠模式
工廠模式要滿足的原則:
開閉原則:對擴充套件開放,對修改關閉
依賴倒置原則:面向介面程式設計,不要面向實現程式設計。
迪公尺特法則:只與你的直接朋友交談,不跟陌生人說話。
核心本質:
例項化物件不適用new,用工廠方法代替
將選擇實現類,建立物件統一管理和控制。從而將呼叫者跟我們的實現類解耦
三種模式:
1.簡單工廠:
用來生產同一等級結構中的任意產品(對於增加新的產品,需要覆蓋已有**)
2.工廠方法模式:
用來生產同一等級結構中的固定產品(支援增加任意產品)
3.抽象工廠模式:
圍繞乙個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。
我們首先實現乙個car的介面:
public
inte***ce
car
然後繼承介面,實現兩個類:五菱巨集光、特斯拉
在建立個消費者,例項化兩種型別的車
public
class
wuling
implements
car}
public
class
tesla
implements
car}
public
class
consumer
}
此時,我們是必須要很了解介面以及介面的實現類,才能例項化物件。
相當於現實中,我們想去買一台車,我們還得懂這個車是怎麼造出來的。這就很沒有必要。
我們需要乙個工廠來幫我們造車,我們直接拿就可以了。
public
class
ca***ctory
else
if(car.
equals
("特斯拉"))
else
}}
public
class
consumer
}
區別就是,當我們只寫自己去new乙個物件的時候,我們需要了解這個車的很多細節,需要給他傳入很多的引數,比如 扭矩、軸距、發動機型號、內部空間大小。這些都需要我們自己去很了解的輸入。
但是採用工廠模式的話,我們只需要跟工廠說,給我提一輛最拉風能把妹的車。工廠會根據我們提的乙個很高層次的需求去匹配一些車的細節的實現,然後給我們返回一輛綠色的蘭博基尼。
但是這種方法存在著缺陷,當我們的選擇中增加了大眾,那麼就要修改ca***ctory中的**,這不符合開閉原則。
因此簡單工廠模式也稱為靜態工廠模式。如果不修改源**的情況下,做不到增加新的東西。
為了滿足開閉原則,方便實現擴充套件。因此採用工廠方法模式。
再抽象出工廠這麼個介面。
public
inte***ce
ca***ctory
那麼此時我想取車的話
public
class
teslafactory
implements
ca***ctory
}
public
class
consumer
}
意思就是我想買哪種型別的車就去哪種車廠去提貨,而不是統一的工廠提貨。
這樣子會很方便擴充套件。如果有一種新車出現,我們就不必要去修改已有的**,只需要擴充套件的生產這種新車的車廠即可。但是**量會提高很多。
23種設計模式 工廠模式
在軟體系統中,經常面臨著建立物件的工作 由於需求的變化,需要建立的物件的具體型別經常變化。如何應對這種變化?如何繞過常規的物件建立方法 new 提供一 種 封裝機制 來避免客戶程式和這種 具體物件建立工作 的緊耦合?定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠模式使得乙個類的例項化延遲...
23種設計模式之 工廠模式
android中,工廠模式分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式。一.簡單工廠模式。定義 簡單工廠模式又叫靜態方法模式 因為工廠類定義了乙個靜態方法 簡單工廠模式可以理解為負責生產物件的乙個類,稱為 工廠類 我們主要講的就是簡單工廠模式,其他兩種也是簡單工廠模式的衍生 我們在專案中經常使...
23種設計模式之工廠模式
基本介紹 簡單工廠模式定義了乙個工廠類,他可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類,簡單工廠模式中用於被建立例項的方法通常為靜態 static 方法,因此簡單工廠模式又被成為靜態工廠方法 特點需要什麼,只需要傳入乙個正確的引數,就可以獲取所需要的物件,而無需知道其實現過程...