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

本文详细讲解了Java中的迭代器模式,包括其定义、适用场景、优缺点以及在JDK和Mybatis中的应用。接着介绍了策略模式,阐述了其在消除if...else...中的作用,提供了策略模式的编码示例,并分析了JDK和Spring中的源码实现。最后,探讨了解释器模式,讨论了其在解决特定语言解释中的应用,分析了JDK和Spring中解释器模式的相关类。
摘要由CSDN通过智能技术生成

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

18.1 迭代器模式讲解

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

18.2 迭代器模式代码解析

  1. 课程迭代器:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

  1. java.util.Iterator:hasNext();
    Itr in ArrayList(java.util)
    可以通过该接口查看迭代器的具体应用;
    在这里插入图片描述
  2. mybatis:DefaultCursor。

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

19.1 策略模式讲解

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

19.2 策略模式coding

  1. 策略模式的初级应用:
    在这里插入图片描述
    避免重复new对象:
    在这里插入图片描述
  2. 策略工厂(消除if…else):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  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. 案例:通过栈进行计算
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

  1. java.util.Pattern
  2. Spring:ExpressionParser
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值