c++23中设计模式之建造者模式,原型模式

建造者模式

uml类图
建造者模式例子

个人对uml图的理解和概括:

  1. Product是有公共部件的,如例子中的各类car,都有engine,wheel,tie等
  2. Builder是抽象类,BuildPart()可以是BuildEngine()=0;BuildWheel()=0;BuildTie()=0等,公共部件的接口方法
  3. 具体builder需要实现BuildPart这些接口
  4. Director拥有的类型是基类Builder指针,但实例化时指向的是具体的builder,所以生成对应的部件
  5. 最后Construct里用Builder指针(指向子类)build出对应的部件,后面有组装可以增加怎么组装

原型模式

原型模式
原型模式例子

个人理解与总结:

  1. 仍然是面向接口
  2. 抽象基类提供接口,如Prototype* Clone(),子类实现
  3. 基类需要保证自己的构造确保能无损“拷贝”,特别是指针类型的
  4. 具体类实现Clone,先调用基类的构造,最后自身的数据也需要无损“拷贝”,最终得到新ConcretePrototype*,并返回给外部

目的
拷贝一个完全一样的对象

适用场景

  1. 拷贝当前状态的副本
  2. 该对象构建过程复杂,想得到一个相同,状态却只有几处或一处不同的新对象
  3. 该对象动态时才能确定的,动态创建
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值