美文网首页
Head First 设计模式(9)迭代器模式与组合模式

Head First 设计模式(9)迭代器模式与组合模式

作者: kaiker | 来源:发表于2021-07-18 14:34 被阅读0次

1、本章的例子——餐厅和煎饼屋合并

有两个餐厅要合并了,两个餐厅有不同的菜单,一个菜单用ArrayList写的,一个是直接用类数组写的,现在合并后,菜单需要合并在一起。

煎饼屋菜单,用ArrayList
餐厅菜单,用数组
  • 如果要遍历菜单需要使用不同的方法


    遍历两种菜单
  • 可以通过迭代器接口统一两种菜单的遍历方式

public interface Iterator {
  boolean hasNext();
  Object next();
}
  • 然后分别为餐厅、煎饼店实现迭代器


    餐厅迭代器
    为餐厅类添加创建迭代器方法
    基于迭代器实现统一的遍历方法
    依赖createIterator接口的迭代器统一方法

2、迭代器模式

提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内不展示

迭代器模式类图

3、设计原则

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

  • 当一个模块或一个类被设计成只支持一组相关的功能时,我们说它具有高内聚
  • 如果有一个类具有两个改变的原因,那么这会使得将来该类的变化几率上升

4、另一个例子——菜单中包含子菜单

菜单项目具有层次,需要一种结构可以兼容

嵌套的菜单

5、组合模式

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

  • 让子节点、父节点都实现相同的接口。相同的操作可以用在组合上也可以运用在个别对象上。
组合模式类图 组合菜单外部迭代器

相关文章

网友评论

      本文标题:Head First 设计模式(9)迭代器模式与组合模式

      本文链接:https://www.haomeiwen.com/subject/uqmwpltx.html