前面学习了创造模式系列和结构模式系列,本文来学习下行为模式系列
这一章打算找一些开源项目中的代码例子来写。
父类与子类
策略模式
针对接口的一个方法有不同的实现,让客户来选择
模板方法
父类一般是抽象类,实现接口方法,定义一个抽象方法让子类去实现
通过dubbo代码中,如何实现客户端负载均衡算法,来理解下这几个模式
类与类之间
观察者模式
很经典的设计模式,又叫监听者模式,我下面举的例子是 jdk源码中,事件通知的代码
迭代子模式
这个模式一般用来遍历集合,所以我举得例子是 ArrayList
责任链模式
这个模式也很经典,构造责任链,Filter javaweb 开发都了解。 下面我觉得例子是最近看netty源码中channelPipeline
命令模式
这个模式,我举得列子是dubbo代码中container 容器类的实现
类的状态
备忘录模式
这个模式有点类似于 数据库事务回滚。 打个快照用于回到最初
状态模式
这个模式一般与前面的观察者模式,结合起来一起使用,用得例子是rocketmq中,处理remoting链接的时候,来抽象channel的状态
通过中间类
访问者模式
这个模式主要将对数据结构的操作和数据本身隔离开, 比如 我们经常写的service 和DAO
中介者模式
这个模式主要是 彼此绝缘,让操作者不包含任何对User类的引用
解释器模式
这个模式,主要用于国际化之类的。同一个code,给用户不同语言的展示