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(); } }
總結:java
一、以上實例即爲一種「簡單工廠」模式this
二、思路爲定義一個與實現類分離,與接口耦合的類,裏面調用接口方法blog
三、再經過接口與實現類多態的原理,定義一個獲取接口類型的實現類實例的類工廠接口
四、之後若是對實現類有所替換或改動,只須要從新定義實現類,再在類工廠中獲取接口類型的實現類實例的方法中,指向從新定義的實現類便可,不須要改動原來的實現類隊列