Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)

Java设计模式精讲—课程笔记8

  • 18 迭代器模式讲解+源码解析
    • 18.1 迭代器模式讲解
    • 18.2 迭代器模式代码解析
    • 18.3 迭代器模式源码解析(jdk+mybatis)
  • 19 策略模式讲解+Coding+源码解析
    • 19.1 策略模式讲解
    • 19.2 策略模式coding
    • 19.3 策略模式源码解析(jdk+spring)
  • 20 解释器模式讲解+源码解析
    • 20.1 解释器模式讲解
    • 20.2 解释器模式coding
    • 20.3 解释器源码解析-jdk+spring

18 迭代器模式讲解+源码解析

18.1 迭代器模式讲解

  1. 定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示;
    类型:行为型;
  2. 适用场景:
    访问一个集合对象的内容而无需暴露它的内部表示;
    为遍历不同的集合结构提供一个统一的接口;
  3. 优点:
    分离了集合对象的遍历行为;
  4. 缺点:
    类的个数成对增加;
  5. 相关设计模式:
    迭代器模式和访问者模式:访问者模式中扩展开放的部分作用于对象的操作上,迭代器模式中扩展开放的部分作用于集合对象的种类上;
  6. 迭代器日常使用广泛,但日常使用的项目中,数据结构都会使用现成迭代器,几乎不会自己写一个迭代器。

18.2 迭代器模式代码解析

  1. 课程迭代器:
    在这里插入图片描述
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第1张图片
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第2张图片
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第3张图片

18.3 迭代器模式源码解析(jdk+mybatis)

  1. java.util.Iterator:hasNext();
    Itr in ArrayList(java.util)
    可以通过该接口查看迭代器的具体应用;
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第4张图片
  2. mybatis:DefaultCursor。

19 策略模式讲解+Coding+源码解析

19.1 策略模式讲解

  1. 定义:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户;
    实际应用时可大范围处理掉if…else…
    类型:行为型;
  2. 适用场景:
    系统有很多类,而他们的区别仅仅在于他们的行为不同;
    一个系统需要动态地在几种算法中选择一种;
  3. 优点:
    开闭原则;
    避免使用多重条件转移语句;
    提高算法的保密性和安全性;
  4. 缺点:
    客户端必须知道所有的策略类,并自行决定使用哪一个策略类;
    产生很多策略类;
  5. 相关设计模式:
    策略模式和工厂模式:工厂模式是创建型的,接受指令创建出符合要求的具体对象;策略模式是行为型的,接受已经创建好的对象,实现不同行为;
    策略模式和状态模式:策略模式客户端需要选择哪个策略,状态模式客户端不需关心具体状态,状态会自动转换;

19.2 策略模式coding

  1. 策略模式的初级应用:
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第5张图片
    避免重复new对象:
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第6张图片
  2. 策略工厂(消除if…else):
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第7张图片
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第8张图片
    在这里插入图片描述
  3. 策略模式一般不独立使用,可结合单例、工厂、享元等方式一起实现;

19.3 策略模式源码解析(jdk+spring)

  1. Comparator:比较器,抽象策略;
    在这里插入图片描述
    Arrays sort、 TreeMap:用到Comparator;
  2. Spring:Resource、InstantiationStrategy
  3. 策略和策略之间可以存在继承关系;

20 解释器模式讲解+源码解析

20.1 解释器模式讲解

  1. 定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子;
    为了解释一种语言,而为语言创建的解释器;
    类型:行为型;
  2. 适用场景:
    某个特定类型问题发生频率足够高;
  3. 优点:
    语法由很多类表示,容易改变及扩展此“语言”;
  4. 缺点:
    当语法规则数目太多时,增加了系统复杂度;
  5. 相关设计模式:
    解释器模式和适配器模式:适配器模式不需预先知道要适配的规则,解释器要把规则写好,根据规则进行解释;
  6. 日常开发中,解释器应用较少,一般为开源包。

20.2 解释器模式coding

  1. 案例:通过栈进行计算
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第9张图片
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第10张图片
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第11张图片
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第12张图片
    Java设计模式精讲—课程笔记8(第18章 迭代器模式 + 第19章 策略模式 + 第20章 解释器模式)_第13张图片

20.3 解释器源码解析-jdk+spring

  1. java.util.Pattern
  2. Spring:ExpressionParser

你可能感兴趣的:(基础学习,设计模式,Java,课程笔记,基础学习)