在Java中简单的使用观察者模式
2017-01-04 14:42
537 查看
主题接口:
public interface Subject {
public void registerObserver(observer o);
public void removeObserver(observer o);
public void notifyObservers();
}
观察者接口:
展示接口:
public interface DisplayElement {
public void display();
}
主题实现类:
public class WeatherData implements Subject {
private ArrayList<observer> Observers;
private float temp,humidity,pressure;
public WeatherData(){
Observers = new ArrayList<>();
}
@Override
public void registerObserver(observer o) {
Observers.add(o);
}
@Override
public void removeObserver(observer o) {
int i = Observers.indexOf(o);
if (i >= 0){
Observers.remove(i);
}
}
@Override
public void notifyObservers() {
for (int i = 0; i < Observers.size(); i++) {
observer o = Observers.get(i);
o.update(temp,humidity,pressure);
}
}
public void measurementsChanged(){
notifyObservers();
}
public void setMeasurements(float temp,float humidity,float pressure){
this.temp = temp;
this.humidity = humidity;
this.pressure = pressure;
measurementsChanged();
}
}
观察者实现类:
public class CurrentConditionsDisplay implements observer,DisplayElement {
private float temp,humidity,pressure;
public CurrentConditionsDisplay(){
}
@Override
public void update(float temp, float humidity, float pressure) {
this.temp = temp;
this.humidity = humidity;
this.pressure = pressure;
display();
}
@Override
public void display() {
System.out.println("当前天气:"+temp+"℃ "+humidity+"湿度 "+pressure+"气压");
}
}
主方法类:
public class WeatherStation {
public static void main(String[] agrs){
WeatherData data = new WeatherData();
CurrentConditionsDisplay display = new CurrentConditionsDisplay();
data.registerObserver(display);
data.setMeasurements(25,23,56);
}
}
public interface Subject {
public void registerObserver(observer o);
public void removeObserver(observer o);
public void notifyObservers();
}
观察者接口:
public interface observer { public void update(float temp,float humidity,float pressure); }
展示接口:
public interface DisplayElement {
public void display();
}
主题实现类:
public class WeatherData implements Subject {
private ArrayList<observer> Observers;
private float temp,humidity,pressure;
public WeatherData(){
Observers = new ArrayList<>();
}
@Override
public void registerObserver(observer o) {
Observers.add(o);
}
@Override
public void removeObserver(observer o) {
int i = Observers.indexOf(o);
if (i >= 0){
Observers.remove(i);
}
}
@Override
public void notifyObservers() {
for (int i = 0; i < Observers.size(); i++) {
observer o = Observers.get(i);
o.update(temp,humidity,pressure);
}
}
public void measurementsChanged(){
notifyObservers();
}
public void setMeasurements(float temp,float humidity,float pressure){
this.temp = temp;
this.humidity = humidity;
this.pressure = pressure;
measurementsChanged();
}
}
观察者实现类:
public class CurrentConditionsDisplay implements observer,DisplayElement {
private float temp,humidity,pressure;
public CurrentConditionsDisplay(){
}
@Override
public void update(float temp, float humidity, float pressure) {
this.temp = temp;
this.humidity = humidity;
this.pressure = pressure;
display();
}
@Override
public void display() {
System.out.println("当前天气:"+temp+"℃ "+humidity+"湿度 "+pressure+"气压");
}
}
主方法类:
public class WeatherStation {
public static void main(String[] agrs){
WeatherData data = new WeatherData();
CurrentConditionsDisplay display = new CurrentConditionsDisplay();
data.registerObserver(display);
data.setMeasurements(25,23,56);
}
}
相关文章推荐
- Java 语言使用 Observer/Observable 实现简单的观察者模式
- Java 语言使用 Observer/Observable 实现简单的观察者模式
- Java-马士兵设计模式学习笔记-观察者模式-AWT简单例子
- 有趣的Java - 简单使用enum实现策略模式Strategy
- 如何使用 Java8 实现观察者模式?(上)
- Java技术_每天掌握一种设计模式(002)_使用场景及简单实例(创建型:单例模式)
- GOF23设计模式之观察者模式的理解与实现2(使用java自带的观察者类和接口)
- 简单JAVA观察者模式监测文件是否改动
- 使用 Java8 实现观察者模式的方法(下)
- Java 观察者模式 简单例子
- java中观察者模式的使用场景
- Java对观察者模式的支持——Observer和ObServable的使用
- 观察者模式(Observer Pattern)(三):使用java内置的支持实现HeadFirst气象站
- 如何使用 Java8 实现观察者模式?(下)
- 如何使用 Java8 实现观察者模式?(上)
- 使用java类库中的Observable类和Observer接口实现观察者模式(精简版)
- 设计模式 - 观察者模式(Observer Pattern) Java内置 使用方法
- Java技术_每天掌握一种设计模式(005)_使用场景及简单实例(创建型:建造模式)
- 设计模式 - 观察者模式(Observer Pattern) Java内置 使用方法
- 如何使用 Java8 实现观察者模式?(下)