工廠模式:是為了將物件的建立和呼叫者分開,實現解耦,也就是將繁瑣的物件的建立由工廠來實現。
簡單工廠也叫靜態工廠,通過簡單工廠類的靜態方法傳入不同的引數來返回不同的所需要的物件。
缺點:雖然工廠不需要建立例項來呼叫方法,但是不同通過繼承來改變建立方法的行為。
新增加的物件 需要修改工廠類的**來實現。
**實現
public
abstract
class
pizza
public
class
baolezipizza
extends
pizza
}
public
class
hualaishipizza
extends
pizza
}
public
class
******pizzafactory
else
if(type.
equals
("hualaishi"))
else
return pizza;
}}
public
class
******pizzatest
}
工廠方法模式:定義乙個建立物件的藉口,由子類決定要例項化哪乙個類,工廠方法把例項化推遲到子類。
優缺點:工廠方法模式更加符合開閉原則,但是每次擴充套件會增加新的類
設計原則
依賴倒轉原則:要依賴抽象,不要依賴具體類。
依賴倒轉原則的指導方針(盡量達到,而不是必須遵守)
public
abstract
class
pizaa
}void
bake()
void
cut(
)void
box(
)public string getname()
}
public
class
baolezimalapizza
extends
pizaa
}
public
class
baolezizhishipizza
extends
pizaa
}
public
class
hualaishimalapizza
extends
pizaa
}
public
class
hualaishizhishipizza
extends
pizaa
}
public
abstract
class
pizzastore
protected
abstract pizaa createpizza
(string type)
;//這就是 工廠方法由子類實現
}
public
class
baolezipizzastore
extends
pizzastore
else
if(type.
equals
("zhishi"))
else
}}
public
class
hualaishipizzastore
extends
pizzastore
else
if(type.
equals
("zhishi"))
else
}}
public
class
pizzatest
}
**實現:
public
inte***ce
pizza
class
expensivepizza
implements
pizza
}class
implements
pizza
}
public
inte***ce
souce
class
expensivesouce
implements
souce
}class
cheapsouce
implements
souce
}
public
inte***ce
abstractpizzafactory
public
class
expensivefactory
implements
abstractpizzafactory
@override
public souce createsouce()
}
public
class
cheapfactory
implements
abstractpizzafactory
@override
public souce createsouce()
}
public
class
abstractpizzatest
}
測試結果 設計模式筆記 工廠模式
工廠模式主要是為建立物件提供過度介面,以便將建立物件的具體過程隔離,從而達到提高靈活性的目的 分類一 簡單工廠模式,工廠方法模式,抽象工廠模式 逐步抽象 分類二 工廠方法模式 包括簡單工廠模式 抽象工廠模式 1.簡單工廠模式又稱靜態工廠方法模式,存在目的 定義乙個用於建立物件的介面。組成 工廠類角色...
設計模式學習筆記(工廠模式)
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠模式使乙個類的例項化延遲到其子類。c 中的工廠方法 工廠基類中所定義的建立產品的函式 都是虛函式並且常常是純虛函式。product 工廠基類 定義工廠方法所建立的介面 concreteproduct 工廠具體類 實現product介面 cre...
設計模式學習筆記 工廠模式
簡單工廠 將建立類的 剝離出來,放到乙個類裡面,通過例項化這個類去獲取想要的物件。先將多個類的物件儲存到map裡,然後通過get方法從裡面獲取 工廠方法 基於介面去實現多個不同的方法,類繼承自介面,然後重寫方法 類裡面再建立乙個靜態類,靜態類裡從父類獲取對應的方法的邏輯,父類裡時多種不同的實現。抽象...