筆記3:Abstract Factory 抽象工廠(創建型模式)

new的問題

常規的對象創建方法:

//創建一個對象

Person person = new Person();

 

new的問題:

-實現依賴,不能應對"具體實例化類型"的變化

 

解決思路:

-封裝變化點---哪裏變化,封裝哪裏

-潛臺詞:如果沒有變化,當然不需要額外的封裝

 

工廠模式的緣起

-變化點在"對象創建",因此就封裝"對象創建".

-面向接口編程------依賴接口,而非依賴實現。

最簡單的解決方法

class PersonFactory
{
	public static PersonCreateRoad()
	{
		return new Person();
	}
}
//創建一個Person對象
Person person = PersonFactory.PersonCreatRoad();

 

假設一個遊戲開發場景:

我們需要構造"道路"、"房屋"、"地道"、"叢林"…………等對象

Road road = RoadFactory.CreatRoad();
Building building = RoadFactory.CreatBuilding();
class RoadFactory()
{
	//創建道路
	public static Road CreatRoad()
	{
		return new Road();
	}
	//創建大樓
	public static Buliding CreatBuliding()
	{
		return new Buliding();
	}
	//創建地道
	public static Tunnel CreatTunnel()
	{
		return new Tunnel();
	}


}


簡單工廠的問題:

-不能應對"不同系列對象"的變化。比如有不同風格的遊戲場景----------對應不同風格的道路、房屋、地道……。

如何解決:

-使用面嚮對象的技術來"封裝"變化點。

Abstract Factory模式的幾個要點

-如果沒有應對"多系列對象構建"的需求變化,則沒有必要使用Abstract Factory模式,這時候使用簡單的靜態工廠完全可以。

-"系列對象"指的是這些對性愛那個之間有相互依賴、或作用的關係,例如遊戲開發場景中的"道路"與"房屋"的依賴,"道路"和"地道"的依賴。

-Abstract Factory 模式主要在於應對"新系列"的需求變動。其缺點在於難以應對"新對象"的需求變動。

-Abstract Factory 模式經常和Factory Method模式共同組合來應對"對象創建"的需求變化。

發佈了40 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章