接口(工厂模式):

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

posted on 2018-01-03 20:14  不丶懂  阅读(1103)  评论(0编辑  收藏  举报

导航