設計模式——簡單工廠模式

定義:java

  簡單工廠模式又稱之爲靜態工廠方法,屬於建立型模式。在簡單工廠模式中,能夠根據傳遞的參數不一樣,返回不一樣類的實例。簡單工廠模式定義了一個類,這個類專門用於建立其餘類的實例,這些被建立的類都有一個共同的父類。app

 

 示例代碼:ide

 

Fruit.javaui

package com.designPattern.simpleFactory;

/***
 * 
 * @author liuzhihu
 *
 */
public interface Fruit {

	/***
	 * 定義吃水果的方法
	 */
	public void eatFruit();

}

 

Apple.javaspa

package com.designPattern.simpleFactory;

/***
 * 
 * @author liuzhihu
 *
 */
public class Apple implements Fruit {

	/***
	 * 實現吃水果的方法
	 */
	@Override
	public void eatFruit() {

		System.out.println("吃蘋果  ......");

	}

}

  

Banana.javaorm

 
/***
 * 
 * @author liuzhihu
 *
 */
public class Banana implements Fruit {

	/***
	 * 實現吃水果的方法
	 */
	@Override
	public void eatFruit() {

		System.out.println("吃香蕉 ......");

	}

}

 

FruitFactory.java對象

package com.designPattern.simpleFactory;

public class FruitFactory {

	/***
	 * 採集方法
	 * 
	 * @param type
	 * @return
	 */
	public static Fruit getFruit(String type) {

		if ("Apple".equals(type)) {

			return new Apple();

		} else if ("Banana".equals(type)) {

			return new Banana();

		} else {

			System.out.println("找不到對應的水果......");

			return null;
		}

	}

}

 

MainTest.java blog

package com.designPattern.simpleFactory;

/***
 * 簡單工廠模式
 * 
 * @author liuzhihu
 *
 */
public class MainTest {

	public static void main(String[] args)
			throws ClassNotFoundException, InstantiationException, IllegalAccessException {

		Fruit apple = FruitFactory.getFruit("Apple");

		apple.eatFruit();

		Fruit banana = FruitFactory.getFruit("Banana");

		banana.eatFruit();

	}

}

  

 優勢繼承

            一、簡單工廠模式實現了對責任的分割,提供了專門的工廠類用於建立對象。get

            二、客戶端無須知道所建立的具體產品類的類名,只須要知道具體產品類所對應的參數便可,對於一些複雜的類名,經過簡單工廠模式能夠減小使用者的記憶量。

            三、經過引入配置文件,能夠在不修改任何客戶端代碼的狀況下更換和增長新的具體產品類,在必定程度上提升了系統的靈活性。

 

缺點

            一、因爲工廠類集中了全部產品建立邏輯,一旦不能正常工做,整個系統都要受到影響。

            二、使用簡單工廠模式將會增長系統中類的個數,在必定程序上增長了系統的複雜度和理解難度。

            三、系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多時,有可能形成工廠邏輯過於複雜,不利於系統的擴展和維護。

四、簡單工廠模式因爲使用了靜態工廠方法,形成工廠角色沒法造成基於繼承的等級結構。

相關文章
相關標籤/搜索