建立型設計模式之簡單工廠模式:由乙個工廠物件決定建立那一種產品類的例項,根據自變數的不同返回不同的產品類。
解決問題:解決多重簡單物件重複建立的問題,但是不能解決新建產品型別的問題(開閉原則),新增新產品的問題可以在簡單工廠模式再次進行抽象化處理,使用抽象工廠設計模式。
簡單工廠模式參與角色:
工廠類角色:含有應用緊密相關的商業邏輯,工廠類在客戶端的直接呼叫下建立產品物件,往由乙個具體類實現
抽象產品角色:抽象產品由乙個介面或者抽象類實現
具體產品:實現抽象產品介面
工廠類角色:animalfactory
public abstract class animalfactory else if("dog".equals(animaltype))else}}
抽象產品角色:animal
public abstract class animal 具體產品角色:
public class dog extends animal
}public class pig extends animal
}測試**:
animal animal = animalfactory.createanimal("dog");
animal.eat();
animal = animalfactory.createanimal("pig");
animal.eat();
結果:
缺陷:如果需要對產品擴充套件就需要重新更改工廠的**,不符合開閉的原則
開閉原則:對修改關閉,對擴充套件開放
設計模式 建立型之簡單工廠模式
簡單工廠模式又叫靜態工廠模式。首先,它並不屬於23種gof模式,23種gof中只有工廠模式和抽象工廠模式,但簡單工廠模式是工廠模式和抽象工廠模式的基礎,能更有助於我們理解後面兩者。簡單工廠模式的主要目的是通過不同引數獲取不同類的例項,它的主要實現原理是專門定義乙個工廠類,來建立其他類的例項,被建立的...
建立型設計模式之簡單工廠模式
當某產品有一些種類且種類不是特別多的情況下,可以選擇使用簡單工廠來建立所需產品 物件 而不需要關心具體的建立細節,相對來說便於後面的維護和擴充套件 必須增加產品種類不需要改動太多之前的 這就是乙個簡單工廠簡單實現,有人可能會說不這麼用不行麼,直接new乙個物件還省了很多 其實卻實可以使用設計模式的同...
設計模式 建立型 工廠 簡單工廠模式
動態決定哪個類被例項化,不必事先知道哪個類要被例項化!三 舉例 qq裡面常用發表情的 1 表情 b new smile 這種應該是很熟悉的建立方式 2 表情 b 表情工廠.createbiaoqing 表情內容 四 角色與結構 工廠類角色 creator bqfctory,在creat方法下建立產品...