迭代器模式原理

两个菜馆合并后菜单问题

image.png

传统设计

耦合度高,waitress需要知道什么类型的餐厅的菜单

  1. 菜单项类

image.png

  1. 中餐厅类

image.png

image.png

  1. 西餐厅类

image.png

  1. 服务员waitress类

image.png

迭代器原理和设计

waitress针对接口开发

image.png

image.png

代码

1.iterator类

image.png

2.dinerMenu 中餐厅类

换成getIterator方法
image.png

image.png

image.png

3.CakeHouseMenu 西餐厅类

更换为Iterator方法
image.png

image.png

4.waitress类

image.png

5.测试主类

image.png

java内置迭代器

java内置迭代器设计

类图

image.png

数组没有内置迭代器

需要实现迭代器接口
image.png

list有内置迭代器

image.png

再添加一个咖啡馆hashtable

有内置迭代器
image.png

单一责任原则

减少耦合性
image.png

关键点

传统设计,耦合度高
多用组合,使用迭代器组合

java内置迭代器,数组没有,ArrayList、hashtable有内置迭代器(代码少)

单一责任原则:每一个类只负责一个变化