import static java.lang.System.*; //-接口 interface OutPut{ int MAX_CACHE_LINE=50; void out(); void getData(String mes); } //-实现类 实现接口 class Printer implements OutPut{ private String[] printData = new String[MAX_CACHE_LINE]; private int dataNum=0; public void out(){ while(dataNum>0){ out.println("打印机打印:"+printData[0]); arraycopy(printData,1,printData,0,--dataNum); } } public void getData(String mes){ if(dataNum>=MAX_CACHE_LINE){ out.println("输出队列已满,添加失败!"); }else{ printData[dataNum++]=mes; } } } //-与接口耦合 与实现类分离 class Computer{ private OutPut out; public Computer(OutPut out){ this.out=out; } public void keyIn(String mes){ out.getData(mes); } public void print(){ out.out(); } } //-获取接口类型的实现类实例 工厂 public class OutPutFactory{ public OutPut getOutPut(){ return new Printer(); } public static void main(String[] args){ OutPutFactory of=new OutPutFactory(); Computer cp=new Computer(of.getOutPut()); cp.keyIn("张三李四"); cp.keyIn("王五赵六"); cp.print(); } }
总结:
1、以上实例即为一种“简单工厂”模式
2、思路为定义一个与实现类分离,与接口耦合的类,里面调用接口方法
3、再通过接口与实现类多态的原理,定义一个获取接口类型的实现类实例的类工厂
4、以后如果对实现类有所替换或改动,只需要重新定义实现类,再在类工厂中获取接口类型的实现类实例的方法中,指向重新定义的实现类即可,不需要改动原来的实现类