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