反射可实现程序中无new关键字,实现真正的解耦合
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Member;
/**
* 只要是获取接口示例,都应该通过工厂类来完成
*/
interface IMessager {
public void send(String msg);
}
class NewsPaper implements IMessager {
@Override
public void send(String msg) {
System.out.println("【报纸报道】" + msg);
}
}
class NetMessage implements IMessager {
@Override
public void send(String msg) {
System.out.println("【网络消息】" + msg);
}
}
class Factory {
private Factory() {
}
public static IMessager getInstance(String className) {
IMessager iMessager = null;
try {
iMessager = (IMessager) Class.forName(className).getDeclaredConstructor().newInstance();
} catch (Exception e) {
}
return iMessager;
}
}
public class TestDemo {
public static void main(String[] args) {
IMessager messager = Factory.getInstance("NewsPaper"); //获取指定的接口示例 可以传包+类名
if (messager != null) {
messager.send("www.baidu.com");
}
}
}