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、以后如果对实现类有所替换或改动,只需要重新定义实现类,再在类工厂中获取接口类型的实现类实例的方法中,指向重新定义的实现类即可,不需要改动原来的实现类