• java设计模式创建篇------原型模式


    java设计模式创建篇------原型模式

    开篇

    对于Cloneable接口不了解的可以参照Java技巧------Cloneable接口与clone方法,我们主要围绕这一接口来聊一聊原型模式。

    核心思想

    使用原型实例来确定对象的种类,使用clone方法实现对于这些原型的拷贝,产生新的对象。不通过new来产生对象而是通过clone方法复制对象的的模式为原型模式。

    简单实现

    public class A implements Cloneable{
        private int param;
        private String s;
    
        public String  getS() {
            return s;
        }
    
        public int getParam() {
            return param;
        }
    
        public B(int param, String s){
            this.param=param;
            this.s=s;
        }
    
        public void setParam(int param) {
            this.param = param;
        }
    
        public void setS(String s) {
            this.s = s;
        }
    
        @Override
        public Object clone() throws CloneNotSupportedException {
            A t= (A) super.clone();
            return t;
        }
    }
    
    public static void main(String[] args) throws CloneNotSupportedException {
    	//对多个A类的clone创建
    	A a= new A(12"123");
    	for(i=0;i<6;i++){//数量限制
    		A cloneA =(A) a.clone();
    		a.setParam(i);
    		a.setS(" "+i);
    		System.out.println(a.getS()+a.getParam());
    	}
    }
    

    实现的过程非常简单,基本就是对clone函数的重载与实现,使用Cloneable接口进行标记辅助,除此之外便没有其他需要注意的了。

    小结

    主要是对clone方法的重载,一个接口一个方法就是原型模式的全部,在实现上是在内存上直接复制二进制流,效率很高,比new出来的性能要高,但是要注意一下,clone的过程不会调用构造函数,也就是说通过这一方法创造出来的对象不会有构造函数的处理,所以在具体使用时希望大家根据需求灵活进行,特别是在深浅拷贝的选择上一定要仔细考虑。

  • 相关阅读:
    转载:Package by feature, not layer
    [翻译][架构设计]The Clean Architecture
    消息处理管道
    Pool:小对象缓存or复用
    View事件分发
    动静分离-前后端分离部署
    MySQL 执行计划中Extra的浅薄理解
    探索java世界中的日志奥秘
    记一次转不过弯的递归
    Spring MVC
  • 原文地址:https://www.cnblogs.com/yanzs/p/13788285.html
Copyright © 2020-2023  润新知