怎么优化网站排名具体怎么做,热搜榜排名前十,怎么做动漫照片下载网站,网站免费建立在平常的开发工作中#xff0c;经常会使用到设计模式。合理的使用设计模式#xff0c;可以提高开发效率、提高代码质量、提高代码的可拓展性和维护性。今天来聊聊观察者模式。 观察者模式是一种行为型设计模式#xff0c;用于对象之间一对多的依赖关系#xff0c;当被观察对… 在平常的开发工作中经常会使用到设计模式。合理的使用设计模式可以提高开发效率、提高代码质量、提高代码的可拓展性和维护性。今天来聊聊观察者模式。 观察者模式是一种行为型设计模式用于对象之间一对多的依赖关系当被观察对象发生变化时会通知所有观察者进行相应的更新。 在观察者模式中主要包括 1主题Subject定义了被观察的对象存储了观察者的列表并提供了方法用于增加、删除和通知观察者的方法。 2观察者Observer定义了一个接口或者抽象类通常包括更新方法在主题更新时调用。 3具体主题Concrete Subject实现主题接口将状态变化通知给观察者。 4具体观察者Concrete Observer实现观察者接口负责接受主题的更新并更新自身的状态。 使用场景 1当一个对象的改变需要同时通知给其他多个对象。可以使用观察者模式。 2当一个对象需要广播通知给其他多个对象可以使用观察者模式。 简单示例 主题接口
package test.boot.observer;public interface Subject {void registerObserver(Observer observer);void delObserver(Observer observer);void notifyObservers();}主题实现类
package test.boot.observer;import java.util.ArrayList;
import java.util.List;public class SubjectImpl implements Subject {private ListObserver observerList new ArrayList();private String msg;Overridepublic void registerObserver(Observer observer) {observerList.add(observer);}Overridepublic void delObserver(Observer observer) {observerList.remove(observer);}Overridepublic void notifyObservers() {for (Observer observer : observerList) {observer.update(msg);}}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;notifyObservers();}}观察者接口
package test.boot.observer;public interface Observer {void update(String msg);}观察者1
package test.boot.observer;public class ObserverFirstImpl implements Observer{Overridepublic void update(String msg) {System.out.println(ObserverFirstImpl update msg);}
}观察者2
package test.boot.observer;public class ObserverSecondImpl implements Observer{Overridepublic void update(String msg) {System.out.println(ObserverSecondImpl update msg);}
}测试类
package test.boot.observer;public class ObserverTest {public static void main(String[] args) {SubjectImpl subject new SubjectImpl();Observer observerA new ObserverFirstImpl();Observer observerB new ObserverSecondImpl();subject.registerObserver(observerA);subject.registerObserver(observerB);subject.setMsg(hello);subject.setMsg(world);}}运行结果 以上为观察者模式简单示例加油美好的风景一直在路上期待遇见更好的自己