策略模式
策略模式中,可以随意的更换算法使用的策略。策略模式的角色和职责如下:
- 环境类(Context):环境类是使用算法的角色,它在解决某个问题时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。
- Strategy(抽象策略类):定义了策略抽象方法,在环境类的算法中调用了抽象策略类中的抽象方法,所以在具体执行时会调用具体策略类中定义的方法。
- ConcreteStrategy(具体策略类):实现了抽象策略类,定义了具体的策略方法。
案例
观察者模式
观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。
观察者模式中的角色和职责:
- 被观察的目标(Subject):被观察的对象。当需要被观察的状态发生变化时,需要通知(Notify)队列中所有观察者对象。Subject 需要维持一个观察者对象的队列列表。
- 具体的被观察目标(ConcreteSubject):被观察者的具体实现。
- 观察者(Observer):抽象类,当 Subject 的状态发生变化时,Observer 对象将通过一个 callback 函数(Update)得到通知。
- 具体的观察者(ConcreteObserver):观察者的具体实现。