设计模式(6) - 创建型模式总结

创建对象最直接的方法就是利用C++提供的构造函数,这种方法的缺点是让代码绑定了具体的类型;一旦该具体类型需要被替换为新的类型,那么程序逻辑就不得不修改;更糟糕的是,可能需要到处修改这样的代码。Open/Close原则的一个要旨是要避免这种修改!如前所述,所有的创建型设计模式解决这个问题的方案都是:基于一个稳定的接口来创建对象。

  • 工厂方法模式定义一个抽象接口,由该接口的子类来决定所创建对象的具体类型;
  • 原型模式调用Clone()接口来复制一个已经存在的对象;
  • 抽象工厂模式则是在工厂方法模式或者原型模式的基础上,进一步隐藏相关类型的相关性;
  • Builer模式中Director对象本质上是调用一个模板方法来构造复杂对象,该模板方法隐藏了复杂对象子部件的抽象类型;相同的一个构造过程,能够产生不同的子部件组合;
  • 单件模式向客户隐藏了类的构造函数,但提供一个公开的接口来获取一个实例;该模式向客户隐藏了唯一实例的事实。 

进一步比较这些接口定义,我们发现,这些接口的抽象程度是逐步加强提高的:

  • 单件模式返回了对象的具体类型
  • 工厂方法模式返回了对象的抽象类型
  • 抽象工厂模式如果由工厂方法模式来构建,则返回子部件的抽象类型;如果由原型模式来实现,则可以隐藏子部件的抽象类型
  • 原型模式的Clone()接口由于其通用性,隐藏了对象的抽象类型
  • Builder模式完全隐藏子部件的类型

虽然这些模式都是基于接口来创建对象,这些模式的关注点和价值也不尽相同的,总结如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值