工廠方法模式(詳解)

一、工廠方法

1.特點

定義一個創建產品對象的工廠接口,將產品對象的實際創建工作推遲到具體子工廠類當中。這滿足創建型模式中所要求的“創建與使用相分離”的特點。

2.簡單工廠

簡單工廠不在23中設計模式中,因爲它違背了開閉原則。在新增產品的時候,需要重新修改Factory類的代碼。而工廠方法是對簡單工廠的一種改進,在新增產品的時候,不需要修改原來的代碼。

二、實現

 

package com.factory;

public class Test {
	public static void main(String[] args) {
		MyFactory factory = new FactoryOne();
		Product product1 = factory.newProduct();
		product1.show();
	}
}

//產品接口
interface Product{
	void show();
}
//產品1
class ProductImplOne implements Product{
	@Override
	public void show() {
		System.out.println("我是one");
	}
}
//產品2
class ProductImplTwo implements Product{
	@Override
	public void show() {
		System.out.println("我是two");
	}
}
//工廠接口
interface MyFactory{
	Product newProduct();
}
//工廠1
class FactoryOne extends ProductImplOne implements MyFactory{
	@Override
	public Product newProduct() {
		return new ProductImplOne();
	}
}
//工廠2
class FactoryTwo extends ProductImplTwo implements MyFactory{
	@Override
	public Product newProduct() {
		return new ProductImplTwo();
	}
}

 

三、總結

工廠方法模式的主要優點有:

  • 用戶只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體創建過程;
  • 在系統增加新的產品時只需要添加具體產品類和對應的具體工廠類,無須對原工廠進行任何修改,滿足開閉原則;


其缺點是:每增加一個產品就要增加一個具體產品類和一個對應的具體工廠類,這增加了系統的複雜度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章