本文主要是介绍观察者模式--设计模式2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
observer模式
它的作用是当一个对象的状态发生变化时,能够自动通知其他的关联的对象。
自动刷新对象状态。
观察者模式角色和职责
Subject 被观察者
被观察的对象,当需要被观察的状态发生变化时,需要通知队列中所有的观察者对象。
subject需要维护(添加,删除,通知)一个观察者对象的列表。
Concreate subject
被观察者的具体实现。
Observer 观察者
接口或者抽象类,当suject的状态发生改变时,observer对象将通过一个callback函数得到通知
Concreteobserver
观察者的具体实现。得到通知后将完成一些具体的业务逻辑处理。
其中里面有一个方法很重要
notifyObservers()
当对象发生改变,则通知其所有的观察者。
观察者模式应用
侦听事件驱动程序中外部事件。
监听某个对象的状态变化
发布/订阅,某个新的消息出现,通知邮件列表的订阅者。
代码实现
1.被观察者
import java.util.Observable;
/*** 要成为被观察者必须继承observable,可以被观察。*/
public class Person extends Observable {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;//告诉观察者你改变了this.setChanged();//当name发生改变的时候要通知观察者this.notifyObservers();}public int getAge() {return age;}public void setAge(int age) {this.age = age;//告诉观察者你改变了this.setChanged();//当age发生改变的时候要通知观察者this.notifyObservers();}
}
2.观察者
import java.util.Observable;
import java.util.Observer;
/*** 观察者,实现observer*/
public class MyObserver implements Observer {//callback//当我的name,age发生变化的时候就会自动调用这些方法@Overridepublic void update(Observable o, Object arg) {System.out.println("对象发生变化");}
}
3.主函数
public class Main {public static void main(String[] args) {Person person=new Person();//注册观察者person.addObserver(new MyObserver());//删除观察者// person.deleteObserver();//删除所有的观察者// person.deleteObservers();person.setName("李四");person.setAge(10);}
}
这篇关于观察者模式--设计模式2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!