只要通过更换GetOutter类中的的Outter,即可实现快速换Outter,从而避免了修改多处代码。
public class Computer { private Out outter; public Computer(Out outter){ this.outter=outter; } public void input(String msg) { outter.getData(msg); } public void out(){ outter.out(); } }
public class GetOutter { public Out getOutter(){ return new Printer(); } }
public interface Out { public static final int MAX_SIZE =50 ; void out(); void getData(String msg); default void test(){ System.out.println("这是out接口的默认方法"); } default void print(String...msgs){ for(String msg:msgs){ System.out.println(msg); } } }
public class Printer implements Out { private String[] printdata=new String[MAX_SIZE]; private int printpos=0; public void out() { while(printpos>0){ System.out.println(printdata[0]); System.arraycopy(printdata,1,printdata,0,--printpos); } } public void getData(String msg) { if(printpos==MAX_SIZE){ System.out.println("打印队列已满,添加失败!"); } else{ printdata[printpos++]=msg; } } }
public class Test { public static void main(String[] args) { GetOutter go = new GetOutter(); Computer com = new Computer(go.getOutter()); com.input("LUV SIC prt2"); com.out(); } }