定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類
由於簡單工廠模式中用於建立例項的方法通常是靜態(static)方法,因此簡單工廠模式==靜態工廠方法模式(static factory method)
factory(工廠角色) 即工廠類,負責實現建立所有產品的例項的內部邏輯,被外界呼叫,提供靜態工廠方法,返回型別為產品型別
product(抽象產品角色) 工廠類建立的所有物件的父類,封裝了各種產品物件的公有方法,
concreteproduct(具體產品角色) 簡單工廠模式的建立目標,所有被建立的物件都充當這個角色的具體類的例項
//抽象圖表介面,充當抽象產品類
public
inte***ce
chart
//工廠類,
public
class
chartfactory
else
if(type.
equalsignorecase
("pie"))
else
if(type.
equalsignorecase
("line"))
return chart;
}}
public
class
histogramchart
implements
chart
@override
public
void
display()
}
public
class
client
}
優點:
工廠類包含了必要的判斷邏輯,客戶端免除直接拆功能鍵產品物件的職責
客戶端無須知道拆功能鍵的具體產品類的類名,只需要知道具體產品類對應的引數
缺點:
工廠類集中了所有產品的建立邏輯,職責過大一旦不能正常工作,整個系統都要受到影響
使用簡單工廠類模式勢必會增加系統中類的個數,增加了系統的複雜度和理解難度
一旦新增新的產品就需要修改工廠邏輯,在產品型別較多的時候有可能照成工廠邏輯過於複雜
使用靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構
工廠類負責建立的物件比較少,由於建立的物件比較少,不會造成工廠方法的業務邏輯過於複雜
客戶端只知道傳入工廠類的引數,對於如何建立物件並不關心
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...
設計模式 工廠模式之簡單工廠
工廠模式可以分為 簡單工廠模式 普通工廠模式 靜態工廠模式 抽象工廠模式 簡單工廠模式 就是如何去例項化物件的問題,對於很容易變化的問題,應該考慮用乙個單獨的類來做這個創造例項的過程,這個單獨的類就是工廠 例子 通過簡單工廠建立各種圖形的實現過程 簡單工廠模式建立步驟 建立乙個介面 例 圖形介面 建...
設計模式 工廠模式之簡單工廠
我們常見的設計模式,大致可以分為三大類 建立型 結構性 行為型。工廠模式,屬於建立型。工廠模式到底起的是什麼作用呢?概括來說就是解耦。當某一類物件需要頻繁建立的時候,就會和程式產生比較大的耦合,在物件初始化屬性較多時,工廠模式可以較少這種耦合,這就是他的作用。一般情況下根據場景不同,工廠模式有幾種不...