工廠模式

    關於工廠模式不多介紹了,這篇文章主要貼下自己練習時候寫的代碼,網上工廠模式一搜代碼基本都是寶馬車之類的,所以自己用動物類以及反射重新寫了一下

首先是AnamialProducer接口:
public interface AnaimalProduce {

	public void move();
}

然後定義相關的類,重寫move方法
public class FlyAnamial implements AnaimalProduce {

	@Override
	public void move() {
		// TODO Auto-generated method stub
		System.out.println("這類動物天上飛");

	}

}
public class WalkAnamial implements AnaimalProduce {

	@Override
	public void move() {
		System.out.println("這類動物在地上走");

	}

}


定義一個抽象工廠類,利用反射方法生成具體的Anamial
public abstract class Factory {

	public abstract <T extends AnaimalProduce> T createAnamial(Class<T> className);
}

實際工廠 concreteFactory 類
public class ConcreteFactory extends Factory {

	@SuppressWarnings("unchecked")
	@Override
	public <T extends AnaimalProduce> T createAnamial(Class<T> className) {
		// TODO Auto-generated method stub
		
		T anamial = null;
		try {
			anamial = (T) Class.forName(className.getName()).newInstance();
		} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			
		return anamial;
	}

}

最後我們寫一個測試類測試一下

/*
 * 工廠模式測試類
 */
public class FactoryTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Factory factory = new ConcreteFactory();
		
		AnaimalProduce anamial1 = factory.createAnamial(WalkAnamial.class);
		AnaimalProduce anamial2 = factory.createAnamial(FlyAnamial.class);
		
		anamial1.move();
		anamial2.move();
	}

}


最後控制檯輸出結果是:
這類動物在地上走
這類動物天上飛




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