观察者模式:
当某个事件发生时,通知客户端进行响应,如监听器的原理,即可采用此模式来实现。
观察者对主题中某些属性的改变感兴趣,或者对某个事件的发生感兴趣。
这些变化将由主题通知观察者。
观察者需要先注册到主题中,只要注册到主题中,当事件发生时就会得到通知。
当不关心事件是否发生时,可以取消注册。
===》主题
package pattern.observer; public interface Subject { void registerObserver(Observer observer); void removeObserver(Observer observer); void notifyObserver(); }
package pattern.observer; import java.util.ArrayList; import java.util.List; public class ConcreteSubject implements Subject { private String currentStatus; private boolean illegal; //维护若干感兴趣的观察者 private List<Observer> observers; public ConcreteSubject() { observers = new ArrayList<Observer>(); } //事件发生 public void setDatas(String status, boolean illegal) { this.currentStatus = status; this.illegal = illegal; notifyObserver();//事件发生时,通知客户端 } //注册 public void registerObserver(Observer observer) { if(observer==null) return; if(!observers.contains(observer)) this.observers.add(observer); } //取消注册 public void removeObserver(Observer observer) { if(observer==null) return; if(observers.contains(observer)) this.observers.remove(observer); } //将事件通知到客户端 public void notifyObserver() { for(Observer obs : observers) obs.update(this); } //客户端可以采用拉的方式提取需要的数据 public String getCurrentStatus() { return currentStatus; } public boolean isIllegal() { return illegal; } }
===》观察者
package pattern.observer; public interface Observer { void update(Subject subject); }
package pattern.observer; public class ClientA implements Observer { private String status; public ClientA(Subject subject) { subject.registerObserver(this); } public void update(Subject subject) { if(subject instanceof ConcreteSubject) { ConcreteSubject concreteSubject = (ConcreteSubject) subject; handleData(concreteSubject); showData(); } } private void handleData(ConcreteSubject subject) { this.status = subject.getCurrentStatus(); } private void showData() { System.out.println("status :" + this.status); } }
package pattern.observer; public class ClientB implements Observer { private boolean illegal; public ClientB(Subject subject) { subject.registerObserver(this); } public void update(Subject subject) { if(subject instanceof ConcreteSubject) { ConcreteSubject concreteSubject = (ConcreteSubject) subject; handleData(concreteSubject); showData(); } } private void handleData(ConcreteSubject subject) { this.illegal = subject.isIllegal(); } private void showData() { System.out.println("status :" + this.illegal); } }
===》测试
package pattern.observer; public class ObserverTest { public static void main(String[] args) { ConcreteSubject subject = new ConcreteSubject(); //注册 Observer a = new ClientA(subject); Observer b = new ClientB(subject); //状态发生改变,观察者将得到通知 subject.setDatas("good", false); //解除注册 subject.removeObserver(b); subject.setDatas("bad", true); } }
相关推荐
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...
观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计中的一种行为模式。在iOS开发中,它是一种让多个对象监听或订阅某一个主题对象的状态变化,并在状态变化时自动收到通知的方式。这种模式使得...
程序设计模式观察者模式
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个背景下,我们以Android中的TextView为例,来深入...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响其他对象的行为 l 订阅对象:当主题对象发生改变,订阅对象需要相应处理...
观察者模式和设计模式是软件工程中至关重要的概念,它们为构建可维护、可扩展的系统提供了基础。本文将深入探讨这两个设计模式以及与之相关的Java实现。 首先,观察者模式(Observer Pattern)是一种行为设计模式,...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
观察者模式(Observer)是软件设计模式中的一种行为模式,其主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动...
总结来说,观察者模式是一种重要的设计模式,它允许对象在状态改变时自动通知其他对象,从而降低了系统各部分之间的耦合度,提高了代码的灵活性和可扩展性。在实际项目中,正确使用观察者模式可以有效地管理组件间的...
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件...
观察者模式是软件设计模式中的一种对象行为型模式,它定义了一种一对多的依赖关系,使得每当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常被称为发布-订阅模式、模型-视图模式...
观察者模式(Observer Pattern)是其中一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在银行系统的场景中,这种模式的应用尤其...
观察者模式(Observer)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在C++中广泛应用,特别是在需要...
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
观察者模式是软件设计模式中的一种行为模式,它允许一个对象,称为"主题",维护一个依赖于它的对象列表,这些对象被称为"观察者"。当主题的状态发生改变时,它会通知所有观察者,使它们能够自动更新自己。这种模式在...
观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动编程、发布/订阅系统...
《设计模式——观察者》 在软件工程中,设计模式是一种在特定情境下解决常见问题的经验总结,它们是经过反复验证的最佳实践。观察者模式(Observer Pattern)是行为设计模式的一种,它定义了对象之间的一对多依赖...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...