• Head First 设计模式笔记(第八章 模板方法模式 & 第九章 适配器模式)


    第八章 模板方法模式 p275~314, 第九章 迭代器与组合模式 p315~384.

    概述

    模板方法模式, 定义了一个大的总方法, 和多个小的具体实现的方法. 总方法(算法)控制了总体的流程, 具体实现的方法给予了各个实现类的灵活性.
    迭代器模式, 将一个集合的遍历交给另一个对象来实现, 实现了权责分离. 同时统一了不同集合类型的遍历.
    组合模式, 将对象组合成树形结构来表现"整体/部分"层次结构. 组合能以一致的方式处理个别对象及对象组合.

    模板方法模式

    在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤.
    

    以排序算法举例, 不需要每个对象类都写一次排序算法, 排序算法已经写好了, 对象只需要实现Comparable的接口就可以.

    迭代器模式

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

    迭代器刚接触时, 觉得很难理解. 花里胡哨的操作太多. 仔细分析下来, 就是一个接口Iterator包含hasNext()next()两个方法, 内部用一个变量保存当前元素的位置.

    需要遍历集合时, 先创建迭代器createIterator(), 再使用方法hasNext()next()挨个取出元素.

    Iterator iterator = class.createIteraotr();
    while(iterator.hasNext()){
          Item item = iterator.next();
    }
    

    组合模式

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

    当设计一个包含无限层级的结构时, 一般想到的就是树结构. 树的节点分为普通节点和叶节点, 普通节点包含子节点, 叶节点不包含子节点.

    现实场景

    模板方法模式

    类库和框架有大量的"钩子"方法, 可以自己改写.

    迭代器模式

    一般用到集合的遍历

    组合模式

    树结构中用到

  • 相关阅读:
    DUILib的代码分析
    source$表坏块
    树莓派风扇自动控制随想
    给qq机器人加上bing搜索
    龙芯fedora28日常生存指南
    攻防世界 when_did_you_born
    部署PWN题Docker环境
    NPUCTF2020 EzRSA
    金融密码杯 The Art of War
    Machine Learning & Deep Learning Fundamentals
  • 原文地址:https://www.cnblogs.com/winwink/p/HeadFirstPattern_P5_TemplateMethod-Iterator.html
Copyright © 2020-2023  润新知