• 文章
  • 在线工具

原型模式-JAVA设计模式

原型模式 JAVA设计模式
1121
原型模式是允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。工作原理:通过将一个原型对象传给那个要发动 创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建

原型模式的优点:
1.Prototype模式允许动态增加或减少产品类。由于创建产品类实例的方法是产品批类内部具有的,因此增加新产品对整个结构没有影响
2.Prototype模式提供简化的 创建结构。工厂方法模式常常需要一个与产品类等级结构相同的等级结构,而 Prototype不需要这样。
3.Prototype模式具有给一个应用软件动态加载的新功能的能力。由于Prototype的独立性较高,可以很容易动态加载新功能而不影响老系统
4.产品类不需要非得有任何事先确定的等级结构,因为Prototype模式适用于任何的等级结构

原型模式的缺点:
1.使用原型管理器,体现在系统中原型数目不固定时,可以动态的创建和销毁。
2.实现克隆操作
3.Prototype模式同样用于隔离类对象的使用者和具体类型之间的耦合关系,它同样要求这些‘容易类’拥有稳定的接口


  • 原型模式中对象的拷贝是二进制流的拷贝,并不会执行构造函数,因此要在构造函数中做一些额外操作的对象需要注意此问题
  • 因为其忽略了构造函数(包括其访问权限),所以和单例模式是冲突的,因为单例模式将构造函数设为private的.
  • 尽量使用深拷贝类防止错误的发生,对于只有值域类型的对象使用浅拷贝
  • 原型模式中的 原型 与 clone实例通过 equals 和 ==比较返回值都是 false
  • 有些对象的clone()方法是直接new一个对象,如Intent,需要根据创建对象的复杂程度来决定.
  • 对于对象中包含final关键字的拷贝无法编译通过
  • Object中的clone()方法是线程不同步的.在需要线程安全的场景,需要做好同步工作.
  • 对象的拷贝还有其他方式,如序列化接口Serializable


评论
或者使用社交账号快捷登录