概念:定義乙個具體的工廠類來建立其他類的例項物件,所有的例項物件都有相同的父類。
簡單工廠模( 靜態工廠模式 )式在設計模式中的定位:類的建立型模式 / 物件例項化的模式,建立型模式用於解耦物件的例項化過程。
幹什麼:定義乙個類來建立其他類的例項。
作用:解耦。向外界提供工廠類,由工廠類建立需要的具體例項,避免了類與類直接發生關係,類 - 工廠類 - 類,以工廠類作為乙個中間媒介,使類與類 松耦合 。
簡單工廠模式核心知識點:
工廠類(核心)
簡單工廠模式的核心,負責實現建立所有例項的內部邏輯。
2.抽象(product)角色
簡單工廠模式所建立所有物件的父類,它負責描述所有例項的共有的公共介面。
3.具體產品角色
簡單工廠模式所建立的具體例項物件
//抽象父類
public inte***ce furit
//具體產品類
@override
public void ******furit()
}public class banana implements furit
}//工廠類
public class furitfactory else if("banana".equalsignorecase(classname))
return null;
*///使用外界環境傳遞的產品類的全限定名,通過反射建立產品的例項物件。
class<?> beanclass = class.forname(classname);//會初始化靜態**塊
return (furit)beanclass.newinstance(); }}
//客戶端呼叫
public class factorymain
}
工廠類根據外部條件建立需要的例項物件:
使用if..else 判斷,返回例項物件。這種方式在產品類過多的情況下會比較繁瑣。
2. 外界傳遞需要例項化的物件的全限定名,通過反射建立例項物件。
class<?>
beanclass
= class.
forname
(classname
);//會初始化靜態**塊
return
(furit)
beanclass
.newinstance();
優點:解耦,改善物件耦合度過高的情況。
使類與類沒有直接發生接觸,通過工廠類作為媒介,在修改類檔案時,只需要修改工廠類中的邏輯,不需要需改其他地方。
缺點:
簡單工廠模式的缺點也體現在工廠類,由於所有的例項建立邏輯都集中在工廠類。所以 「高內聚」 方面做的並不好。當系統的具體產品不斷增多,可能需要修改工廠類,他的擴充套件性並不好。
注意:
這個模式的核心是工廠類,它包含必要的判斷邏輯,根據外界給的資訊,決定應該建立那個具體例項物件。
工廠模式 簡單工廠
簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...
工廠模式 簡單工廠
工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...
簡單工廠模式,工廠模式,抽象工廠模式
三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...