一、迭代器模式
提供一种方法顺序访问一个聚合对象中的各个对象
二、示例
餐馆合并菜单:有一个中餐厅和一个西餐厅合并了,因此服务员服务的时候需要对菜单进行合并,可是
- 1.西餐厅的菜单是用数组实现的
- 2.中餐厅的菜单使用ArrayList实现的
用传统的面向对象的模式方式实现菜单的组合:
1.定义菜单对象
1 | /** |
2.定义西餐厅的菜单
1 |
|
3.定义中餐厅的菜单
1 |
|
4.服务员输出所有菜单
1 |
|
缺点:直接将集合数据暴露在外面使用,安全性较差;对象与对象之间的耦合度较高;并且不利于拓展新的类型。
三、迭代器模式
自定义一个迭代器接口,每个集合对象实现迭代方法,获取集合数据时则统一操作迭代器即可
1.定义迭代器接口
1 | /** |
2.中西餐厅分别实现迭代方法
1 | /** |
1 | /** |
3.输出时只需遍历迭代器即可
1 |
|
1 |
|
四、Java内置的迭代器
Java提供了内置的迭代器Iterator
1.ArrayList已经集成了内部的迭代器,可直接使用
2.数组没有集成迭代器,则需要重新实现迭代器的方法
1 |
|
3.若添加一种新的集合类型只要实现了迭代器方法,也可用统一的方式进行遍历
五、单一责任原则
一个类,应该只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。
例如:要实现逻辑和界面的分离。
Java设计模式所有示例代码,持续更新中