观察者模式
含义主要就是说一个对象发生了改变,而这个改变需要将消息告知给所有和这个对象有关的所有对象
通俗点说,就是类似于有一个第三方的中介,然后他连接着这些对象,当需要改变的时候,就可以借由这个中介通知给所有人
观察者模式(Observer Pattern)是一种软件设计模式,它定义了一种一对多的关系,当一个对象的状态发生变化时,它的所有依赖对象(观察者)都会自动收到通知并更新。
观察者模式的主要参与者包括以下几个角色:
Subject(主题):也称为被观察者,它维护一系列观察者对象,提供注册和删除观察者的方法,并在状态发生变化时通知观察者。
Observer(观察者):定义一个更新接口,用于接收来自主题的通知,并根据主题的状态进行相应的更新操作。
ConcreteSubject(具体主题):继承自Subject,实现具体的业务逻辑,并在状态发生变化时通知观察者。
ConcreteObserver(具体观察者):继承自Observer,实现更新接口,根据主题的通知进行具体的更新操作。
总的来说,观察者模式是一种常用的设计模式,它能够实现对象之间的松耦合,提高系统的灵活性和可扩展性,适用于当一个对象的状态变化需要通知其他对象并进行相应处理的场景。
观察者模式的优点包括:
- 松耦合:主题和观察者之间的耦合度低,它们可以独立变化,互不影响。
- 可扩展性:可以方便地增加新的观察者,主题对象无需知道观察者的具体细节。
- 高度灵活:主题和观察者之间通过接口进行通信,使得它们可以灵活地交互和扩展。
- 支持广播通信:主题可以同时通知多个观察者,观察者之间相互独立,不影响通知的传递。
观察者模式的缺点包括:
- 如果观察者较多或者观察者之间的处理逻辑复杂,可能会导致性能问题。
- 如果观察者和主题之间存在循环依赖,可能会导致系统的不稳定。