[设计模式笔记]一. 创建型模式--5.Prototype模式(原型)(一)

创建型模式--Prototype模式(原型)

一. 意图


用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象.


二. 适用性


2.1 当要实例化的类是在运行时刻指定时;

2.2 为了避免创建一个与产品类层次平行的工厂类时;

2.3 当一个类的实例只能有几个不同状态组合中的一种时;

2.4 当建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些.


三. 模式结构


图1


四. 角色说明


Client: 模式的使用者直接调用对应的对象的Clone方法来创建对象.

Prototype: 声明Clone接口.

ConcretePrototype: 实现原型克隆自身从而创建一个新的对象;

五. 说明

它对客户隐藏了具体的产品类(对象自己就是工厂了).

2. Prototype允许只通过客户注册原型实例就可以将一个新的具体产品并入系统客户可以在运行时刻建立和删除原型.

3. 改变值以指定新的行为.改变结构以指定新对象.

4. 减少子类的构造. Factory Method模式经常产生一个与产品类层次平行的Creator类. Prototype模式使得你克隆一个原型而不是请求一个工厂方法去产生一个新的对象.

5. Prototype的主要缺陷是每一个Prototype的子类都必须实现Clone操作.



我的理解


6.1 Prototype模式实现的就是对象拷贝自己出来来创建一个新的对象.

6.2 如果创建一个对象,  需要new XXX, 然后需要一定的步骤初始化而且对象在不同的时间里创建会有很不同种状态那么我觉得使用Prototype模式是很方便的

6.3 例如在某一个一刻需要某个对象的拷贝, Clone接口是很好用的.

6.4 在定义数据结构时我通常习惯在结构中增加一个复制构造函数和复制操作符复制操作符的作用好像与Clone的作用一致Clone毕竟是接口为保持一致性, Clone还是需要的.

6.5 Clone中的深拷贝还是浅拷贝看需求而定吧.


相关模式


7.1 工厂模式与Prototype模式相比, Prototype模式的原型对象就是对象工厂了.

7.2 Prototype模式和Abstract Factory模式在某种方面是相互竞争的。但是它们也可以一起使用。Abstract Factory可以存储一个被克隆的原型的集合,并且返回产品对象。(这种情况相当于Abstract Factory模式内部是使用Prototype模式实现的)

7.3 大量使用CompositeDecorator模式的设计通常也可从Prototype模式处获益。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值