临淄专业网站优化哪家好,佛山专业做淘宝网站,18款禁用黄a免费,医疗网站备案一、需要的类
一个发布类#xff1a;里面一个是别人需要订阅的属性#xff0c;以及用于存储订阅者的list#xff0c;attach方法是往list集合里面添加元素#xff0c;notifyObservers通知方法#xff0c;也就是循环调用订阅者里面的一个方法#xff0c;这个notifyObserve…一、需要的类
一个发布类里面一个是别人需要订阅的属性以及用于存储订阅者的listattach方法是往list集合里面添加元素notifyObservers通知方法也就是循环调用订阅者里面的一个方法这个notifyObservers在set属性的时候调用 一个订阅者抽象类发布者notifyObservers里面调用的那个方法外加一个订阅者用于获取里面的内容 N个订阅者在构造器中将自己注册到发布者集合中外加一个接口实现内容
二、实现代码
发布类
public class Subject {private String state;private ListObserver observers new ArrayListObserver();public void attach(Observer observer){observers.add(observer);}public void notifyObservers(){for (Observer observer : observers){observer.update();}}public void setState(String state){this.state state;notifyObservers();}public String getState(){return state;}
}订阅抽象类
public abstract class Observer {public Subject subject;public abstract void update();
}订阅实现类1
public class BinaryObserver extends Observer{public BinaryObserver(Subject subject){this.subject subject;this.subject.attach(this);}Overridepublic void update() {System.out.println(Binary String: this.subject.getState());}
}订阅实现类2
public class OctalObserver extends Observer{public OctalObserver(Subject subject) {this.subject subject;this.subject.attach(this);}Overridepublic void update() {System.out.println(Octal String: subject.getState());}
}调用类
SpringBootApplication
public class ObserverApplication {public static void main(String[] args) {Subject subject new Subject();new BinaryObserver(subject);new OctalObserver(subject);subject.setState(10);subject.setState(20);}
}三、结果