zoukankan      html  css  js  c++  java
  • 创建型模式之原型模式

     
     
    一.定义
      原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
      
    二、模式结构成员构成

    原型模式包含如下角色:

    • Prototype:原型 

      声明克隆自己的接口

    • ConcretePrototype:具体原型

      实现克隆自己的操作

    • Client:客户

      要求原型克隆自己,生成新的对象

    三.代码示例
     
    /**
     *  Prototype Class
     *  原型类
     */
    public class Cookie implements Cloneable {
       
        @Override
        public Object clone() throws CloneNotSupportedException
        {
            //In an actual implementation of this pattern you would now attach references to
            //the expensive to produce parts from the copies that are held inside the prototype.
            return (Cookie) super.clone();
        }
     }
    
    /**
     * Concrete Prototypes to clone
     * 具体原型
     **/
    public class CoconutCookie extends Cookie {
    }
    
    /**
     * Client Class
     * 客户类
     **/
    public class CookieMachine {
    
        private Cookie cookie;//cookie必须是可复制的
    
        public CookieMachine(Cookie cookie) {
            this.cookie = cookie;
        }
    
        public Cookie makeCookie() {
            try {
                return (Cookie) cookie.clone();
            } catch (CloneNotSupportedException e) {
                e.printStackTrace();
            }
            return null;
        }
    
    
        public static void main(String args[]) {
            Cookie tempCookie = null;
            Cookie prot = new CoconutCookie();
            CookieMachine cm = new CookieMachine(prot); //设置原型
            for (int i = 0; i < 100; i++)
                tempCookie = cm.makeCookie();//通过复制原型返回多个cookie
        }
    }
    View Code
     
    四.优点和缺点分析
    优点:
     >可以很方便的克隆一个新的对象
     
    缺点:
    >每一个类都必须配备一个克隆方法,对已经存在的类不容易做到
     
    五.应用场景
    在以下情况下可以使用原型模式:
    >原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;
    >创建值相等,只是命名不一样的同类数据
  • 相关阅读:
    css文字两端对齐,而且居中
    vue项目做微信分享总结
    js获取url参数
    vue微信支付遇到的坑
    Win7的环境变量下的系统变量path不小心修改了,怎么恢复
    解决ios上滑动不流畅及滚动条隐藏无效问题
    数组更新检测
    列表渲染
    条件渲染
    vue调试工具的安装
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/9206805.html
Copyright © 2011-2022 走看看