前面2节,我们主要介绍了构建型和结构型的设计模式,今天我们重点讲一下行为型。
策略模式
要点:一个策略的接口,若干个实现类,针对不同的情况,选择不同的策略实现来解决问题。
典型场景:在之前的社保项目当中,针对不同的参保人类型,它的各种险种的计算方式会有一些不同,多采用此种结构
实现难度:一般
广泛程度:比较广泛
模板方法模式
要点:其实,一个称之为模板的abstract类,当中的一部分计算过程是abstract,若干个子类,针对不同的情况,对abstract进行不同的实现。
典型场景:和策略模式差不多,区别在于,对于计算过程完全不同的场景,采用策略模式,一小部分不同的场景,采用模板方法模式。
实现难度:一般
广泛程度:比较广泛
我们其实可以把策略模式理解为一种特殊的模板方法模式,空模板。
观察者模式
要点:一个Observer的interface,多个Observer实现类,主题subject interface及实现类,能够动态添加删除observer,某些操作发生的时候,通知observer。
典型场景:系统发生某些时间的情况下,需要采用邮件、短信等形式通知相关干系人。
实现难度:一般
广泛程度:比较广泛
迭代子模式
略过,参考jdk当中集合类的iterator的使用和实现即可。
责任链模式
要点: 有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。
典型场景:netty的handler pipeline
实现难度:一般
广泛程度:比较广泛
命令模式
要点:一个命令的发起者(invoker),一个命令的接受者(receiver),一个是命令本身(command)。
实现难度:比较难以理解
广泛程度:反正我很少用