6.原型模式

  • 一、角色
    • Prototype(抽象原型类):负责定义用于复制现有实例来生成新实例的方法
    • ConcretePrototype(具体原型类):负责实现复制现有实例并生成新实例的方法
    • Client(客户类/使用者):负责使用复制实例的方法生成新的实例
  • 二、适用场景
    • 对象种类繁多,无法将他们整合到一个类的时候
    • 难以根据类生成实例时
    • 想解耦框架与生成的实例时
  • 三、实例
    图-1
  • 三、开源项目使用实例
    • 在Struts2中为了保证线程的安全性,Action对象的创建使用了原型模式,访问一个已经存在的`Action对象时将通过克隆的方式创建出一个新的对象,从而保证其中定义的变量无须进行加锁实现同步,每一个Action中都有自己的成员变量,避免Struts1因使用单例模式而导致的并发和同步问题
    • 在Spring中,用户也可以采用原型模式来创建新的bean实例,从而实现每次获取的是通过克隆生成的新实例,对其进行修改时对原有实例对象不造成任何影响
原文地址:https://www.cnblogs.com/zhongj/p/11268632.html