美文网首页
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