使用工厂模式 创建对应的对象,以避免对原始代码的修改
//面向接口 public class star {
/** * @param args */ public static void main(String[] args) { Ihuman ihm = (Ihuman)HumanFactory.getIhuman(); ihm.say(); Ihuman ihm2 = (Ihuman)HumanFactory.getIhuman(Woman.class.getName()); ihm2.say(); } }
public class Man implements Ihuman {
public void say() { // TODO 自动生成方法存根 System.out.println(this.getClass().getName()); } }
public class Woman implements Ihuman {
public void say() { // TODO 自动生成方法存根 System.out.println(Woman.class.getName()); }
}
public class HumanFactory {
public static Ihuman getIhuman() { return (Ihuman) ObjectFactory.create(Man.class.getName()); //可以利用配置文件指定生产对象 } public static Ihuman getIhuman(String classname) { return (Ihuman) ObjectFactory.create(classname); } }
public interface Ihuman { public void say(); }
public class ObjectFactory { public static Object create(String classname) { Object obj = null; try { obj = Class.forName(classname).newInstance(); } catch (ClassNotFoundException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (InstantiationException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (IllegalAccessException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return obj; } } |