java中的設計模式(二)--工廠方法模式 反射機制

 

上一次提到了工廠方法模式,經過查閱相關資料,發現可以有改進之處:

改進1.工廠方法

package com.sf.hf;

import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.jk.Fruit;

public class FruitFactory {
	public class FruitFactory {
		public static Fruit createFruit(Class c){
		//定義一個水果對象
		Fruit fruit = null;
		try {
			fruit = (Fruit) Class.forName(c.getName()).newInstance();
		} catch (Exception e) {
			System.out.println("創建出錯");
		}
		return fruit;	
	}
}
	
	
}


改進2.客戶端調用

import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.hf.FruitFactory;
import com.sf.jk.Fruit;


public class Test {

	public static void main(String[] args) {
		System.out.println("---------創建蘋果---------");
		Fruit apple = FruitFactory.createFruit(Apple.class);
		apple.eat();
		apple.plant();
		System.out.println("---------創建香蕉---------");
		Fruit banana = FruitFactory.createFruit(Banana.class);
		banana.eat();
		banana.plant();
	}
}


運行結果:

---------創建蘋果---------
生產水果
蘋果可以吃
蘋果可以種
---------創建香蕉---------
生產香蕉
香蕉可以吃
香蕉可以種


上一次提到的工廠方法是將工廠抽象成一個方法,具體生產產品的方法教給其子類或者實現該接口的子類,

這裏用了反射機制省去了具體的工廠實現類,當需要擴展產品的時候,只要傳入不同的產品類即可。

客戶端調用的時候只需要將產品類傳入即可,如 Apple.class

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