• 接口(工厂模式):


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

  • 相关阅读:
    如何安装Anaconda和Python
    Vue 语法的一些小问题
    uni-app 常用框架内置方法 更新中 .....
    uni-app 生命周期函数
    Koa2 遇到Method Not Allowed 获取不到返回值
    安装 NodeJ Koa2、3 + 独立插件 cli脚手架 npm cnpm Vue
    vue使用video.js解决m3u8视频播放格式
    Oracle迁移至MySQL
    Spring的15点总结
    全文搜索引擎选 ElasticSearch 还是 Solr?
  • 原文地址:https://www.cnblogs.com/baby-zhude/p/8185437.html
Copyright © 2020-2023  润新知