工廠模式(簡單工廠,工廠方法,抽象工廠)

有一個批薩店,批薩店當然要賣批薩,所以會有各種口味類型的批薩:CheesePizza, ClamPizza, VeggiesPizza, PepperoniPizza..........

用戶要求一種口味,批薩店就要給人對應的批薩。例如:用戶要買CheesePizza,批薩店就要給人家一塊CheesePizza。。

1。簡單工廠

public abstract class PizzaStore {
	
	simplePizzaFactory factory;	//簡單工廠
	
	public PizzaStore( simplePizzaFactory factory ) {
		this.factory = factory;
	}

	public Pizza orderPizza(String type) {
		Pizza pizza;
		
		pizza = factory.createPizza( type );	//通常利用靜態方法定義簡單工廠
		pizza.prepare();
		pizza.bake();
		pizza.cut();
		pizza.box();
		
		return pizza;
	}
}
2。工廠方法

批薩店開得很好,紐約和芝加哥相繼有人要加盟。但是紐約人和芝加哥人的口味偏好不同,紐約批薩的薄餅,芝加哥比薩的餅厚等。所以有了工廠方法(抽象,繼承)

工廠方法模式:定義了一個創建對象的接口,但由子類決定要實例化類是哪一個。工廠方法讓類把實例化推遲到子類。


依賴倒置原則:要依賴抽象,不要依賴具體類。

3。抽象工廠

現在有一些加盟店,使用低價原料來增加利潤。爲杜絕這種情況,要求確保原料的一致,所以利用 抽象工廠模式 建立原料工廠,這個工廠將負責創建原料家族中的每一種原料。也就是說,工廠將需要生產麪糰,醬料,芝士等。

抽象工廠模式:提供一個接口,用於創建相關或依賴對象的家族,而不需要明確制定具體類


總結:

1.所有的工廠都是用來封裝對象的創建

2.簡單工廠,雖然不是真正的設計模式,但仍不失爲一個簡單的方法,可以將客戶程序從具體類解耦

3.工廠方法使用繼承:把對象的創建委託給子類,子類實現工廠方法來創建對象。

4.抽象工廠使用對象組合:對象的創建被實現在工廠接口所暴露出來的方法中

5.所有工廠模式都通過減少應用程序和具體類之間的依賴促進耦合

main:


public class PizzaTestDrive {
	public static void main(String[] args) {
		PizzaStore nyStore = new NYPizzaStore();
		PizzaStore chicagoStore = new ChicagoPizzaStore();
		
		Pizza pizza = nyStore.orderPizza("cheese");
		System.out.println("Ethan ordered a " + pizza.getName() + "\n");
		
		pizza = chicagoStore.orderPizza("cheese");
		System.out.println("Joel ordered a " + pizza.getName() + "\n");
	}
}

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