【HeadFirst设计模式】9.迭代器与组合模式
迭代器:
定义:
提供一种方法,顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。(不让你知道我内部是如何聚合的)
把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。
组合模式:
定义:
允许你将元旦组合成树形结构来表现“整体、部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
设计原则:
一个类应该只有一个引起变化的原因
OO原则:
封装变化
多用组合,少用继承
针对接口编程,不针对实现编程
为交互对象之前的松耦合设计而努力
类应该对扩展开放,对修改关闭
依赖抽象,不要依赖具体类
只和朋友交谈
别找我,我会找你
类应该只有一个改变的理由
要点:
迭代器允许访问聚合的元素,而不需要暴露它的内部结构。
迭代器将遍历聚合的工作封装进一个对象中。
当使用迭代器时,我们依赖聚合提供遍历。
迭代器提供了一个通用的接口,让我们遍历聚合的项,当我们编码使用聚合的项时,就可以使用多态机制。
我们应该努力让一个类只分配一个责任。
组合模式提供一个结构,可同时包含个别对象和组合对象。
组合模式允许客户对个别对象和组合对象一视同仁。
组合结构内的任意对象称为组件,组件可以是组合,也可以是叶节点。
在实现组合模式时,有许多设计上的折衷。你要根据需要平衡透明性和安全性。