设计模式笔记-Prototype模式

Prototype模式-原形模式,就是自我复制,一个clone函数的事。先把UML图贴出来。


不同的语言实现可能不同,在C++中,一般clone的实现是:

Prototype* ConcretPrototype::Clone() const
{
    return new ConcretPrototype(*this);
}
这一句很简单,但是它依赖于复制构造函数中对深拷贝和浅拷贝的完好实现,也就是ConcretProtype(const ConcretProtype& cp)函数中,要做好指针成员变量的拷贝工作!

有人可能会疑问,我已经有复制构造函数了,还要这个模式有何用?非常好的问题,我让我感叹,没有实践经验,光是看书上这些理论是很难达到深入理解的!回答如下:

Base *pB = new Derived();
现在要克隆pB,怎么办? 只有Derived d(*pB)!但是如果只有抽象基类(Base) 的调用接口,则你根本不知道具体要实例化哪个子类(Derived),
而且你也不需要知道,所以根本无法克隆。 这时原型模式就显现优势了,即只要调用clone 函数即可: pB->Clone();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值