欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java反射机制与简单工厂模式

程序员文章站 2024-01-20 11:29:40
...

利用Java的反射机制可以解决工厂模式的工厂方法爆炸性扩充问题,原理是:
工厂不需要管理传入的String标志着哪一个对象,只需要根据String参数反射获取对象即可。

interface IMessage{
    public void send();
}
class AMessage implements IMessage{
    @Override
    public void send() {
        System.out.println("这个是A消息");
    }
}
class BMessage implements IMessage{
    @Override
    public void send() {
        System.out.println("这是B消息");
    }
}
class Factory{
    private Factory(){};
	public static IMessage  messageFactor(String className){
	    IMessage  instance=null;
	    try {
	        instance =(IMessage) Class.forName(className).newInstance();
	    } catch (Exception e) {
	        e.printStackTrace();
	    }
	    return instance;
	}
}

但是随之而来就产生了如果我们要新增一个接口的,我们又需要在Factory类里面新增对应接口的工厂方法。那么我们可以利用泛型解决这个问题。

public static <T> T  Factor(String className,Class<T> clazz){//clazz用来确定泛型以及泛型返回值
    T t=null;
    try {
        t =(T) Class.forName(className).newInstance();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return t;
}

这里的clazz并未使用,但是可以由客户端传入参数确定泛型类型。