反射機制,解決工廠模式中,子類增長必須修改工廠類的問題

普通工廠設計模式中,隨着每增長一個子類,必須修改工廠類,問題的根源在於,咱們在工廠類中,經過new關鍵字,建立對象,這樣隨着子類的愈來愈多,修改次數愈來愈多,子類和工廠類的耦合性太大,咱們須要解耦java

咱們能夠經過反射進行子類和工廠類的解耦。設計模式

package com.factory;
interface Animal{
	public void sleep();
}
class Sheep implements Animal{
	@Override
	public void sleep() {
		System.out.println("綿羊睡覺");
	}
}

class Cat implements Animal{
	@Override
	public void sleep() {
		System.out.println("貓咪睡覺");
	}
}
class Factory{
	public static Animal getInstance(String className){
		Animal a=null;
		try {
			//利用反射機制實例化對象,這裏運用反射,能夠解決子類增長必須修改工廠類的問題
			a=(Animal)Class.forName(className).newInstance();
		} catch(Exception e) {
			e.printStackTrace();
		}
		return a;
	}
}
public class TestFactory {

	public static void main(String[] args) {
		//這裏只須要傳入目標類的全類名便可
		Animal a=Factory.getInstance("com.factory.Cat");
		a.sleep();
	}

}
相關文章
相關標籤/搜索