行云流水's Bolg

第九章:迭代器与组合模式 - Head First 设计模式

迭代器模式

迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示。
模式类图:p332

p332图

组合模式

组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
模式类图:p358

p358图

例子:菜单

组合模式的设计:p359图

p359图

p360图

Menu类的print():p363 p363图

组合模式要管理层次结构,还要执行菜单的操作,违背了单一责任原则。

在实现组合模式时,有许多设计上的折衷。你要根据需要平和透明性和安全性。

p367图

比较

  1. 组合模式:客户可以将对象的集合以及个别对象一视同仁。
  2. 迭代器模式:提供一个方式来遍历集合,而无需暴露集合的实现。
  3. 外观模式:简化一群类的接口。
  4. 适配器模式:改变一个或多个类的接口。
  5. 观察者模式:当某个状态改变时,允许一群对象能被通知到。
  6. 策略模式:封装可互换的行为,并使用委托决定使用哪一个。

设计原则

设计原则n:单一责任原则,一个类应该只有一个引起变化的原因,

尽量让每个类保持单一责任。高内聚。

blog comments powered by Disqus