Head First设计模式读书笔记-第九章 Iterator And Composition Pattern 迭代器和组合模式

迭代器模式和组合模式

定义

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

 

这种模式提供一种方法,可以顺序访问一个聚合对象中的元素,而不用知道内部如何表示。

Head First设计模式读书笔记-第九章 Iterator And Composition Pattern 迭代器和组合模式

 

迭代器模式分为,内部迭代器和外部迭代器。外部迭代器,自定义实现遍历,客户控制遍历的实现。内部迭代器则是由迭代器内部控制遍历过程。

 

单一责任:一个类应该只有一个引起变化的原因

 

类的每个责任都有改变的潜在区域。超过一个责任,意味着超过一个改变的区域,因此,尽量让每个类保持单一责任

内聚(cohesion),用来度量一个类或模块紧密地达到单已目的或责任;当一个模块或一个类被设计成只支持一组相关的功能时,高内聚。

 

 

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

 

组合模式以树形方式创建对象的结构,树里面包含组合以及个别的对象。

Head First设计模式读书笔记-第九章 Iterator And Composition Pattern 迭代器和组合模式

 

组合包含组件,组件有两种,组合与叶节点元素

 

组合模式迭代器架构

Head First设计模式读书笔记-第九章 Iterator And Composition Pattern 迭代器和组合模式

示例

定义统一的MenuComponent,通过继承让Menu拥有Menu Component的特性(方法),Menu内部包含List属性,添加时,往List中添加组合Item,让其拥有层次结构,迭代时直接使用属性进行迭代

Head First设计模式读书笔记-第九章 Iterator And Composition Pattern 迭代器和组合模式

第七章总结

组合模式:当有数个对象的集合,它们彼此之间有整体和部分的关系,并且想用一致的方式对待这些对象。

策略模式:封装可互换的行为,并使用委托决定使用哪一个

适配器模式:改变一个或多个类的接口

迭代器模式:提供一个方式来遍历集合,而无须暴露集合的实现

外观模式:简化一群类的接口

组合模式:客户可以将对象的集合以及个别的对象一视同仁

观察者模式:当某个状态改变时,允许一群对象被通知到

 

迭代器允许访问聚合的元素,而不需要暴露它的内部结构

迭代器提供一个通用的接口,以遍历聚合项,当编码使用聚合的项时,可以使用多态机制。

 

组合模式提供一个结构,可同时包含个别对象和组合对象

组合模式允许客户对个体对象以及组合对象一视同仁

组合结构内的任意对象称为组件,组件可以是组合,可以是叶节点

 

OO基础

抽象、封装、多态、继承

OO原则

封装变化

多用组合、少用继承

针对接口编程、不针对实现编程

为交互对象之间的松耦合设计努力

对扩展开放,对修改关闭

依赖抽象,不依赖具体

只和亲密朋友谈话----最少知道原则

类应该只有一个改变的理由-----单一责任原则

OO模式

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

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