分为三种类型
- 创建型
- 结构型
- 行为型
行为型式是用来多个类和对象来完成单个类无法单独完成的任务,模板方法,责任链模式,状态模式,解释器模式。
策略模式主要是用来根据上下文去动态控制类的行为的一个场景,一般用来解决多个if,else带来的代码复杂性和维护复杂等。另外把类的行为进行封装,使程序可以进行动态的扩展和替换,增加程序的灵活性,比如像支付路由这样一个场景,就可以使用策略模式来设计。
观察者模式主要是应用在一对多的对象依赖关系处理中,实现某一个对象变更之后感知的一个场景,一方面可以降低对象依赖关系之间的耦合度,弱化依赖关系,另外一种方面,通知这种状态的通知机制,可以保证依赖对象的状态协同,在Spring源码里面,有大量运用到这种观察者模式,来实现事件的传播和感知,
策略模式和观察者模式是属于行为型
策略模式
把每个算法独立写到一个类里面,使用算法的时候从算法集里面获取,可以灵活获取算法。如Comparator里面的compareTo(o1,o2)。用Map存取算法名和算法的实现接口,实际要用到的时候直接使用Comparetor接口实现,调用compareTo接口
观察者模式(即发布订阅模式)
抽象主题
//抽象主题
abstract class Topic{
// 观察者对象集合
List<Observer> observers;
// 移除观察者
void removeObserve();
// 添加观察者
void addObserve();
// 唤醒观察者
void notifyObserver();
}
抽象观察者
abstract class Observer{
// 接收通知及做出响应
void receiveNotifyAndDoSomething();
}
在spring源码中的使用场景
- spring事件监听