一、使用场景:
1.被观察者:对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量是可以动态添加可变的。
2.对象仅需要将自己的更新通知给其他对象而无需知道其他对象的具体行为。
二、观察者模式的优点:
1.Subject和Observer之间是松耦合的,分别可以独立改变。
2.Subject在发送广播通知的时候,无需指定具体的Observer,Observer可以自己决定是否订阅subject的通知
三、设计方法:三个接口,一个被观察者实现类,多个观察者实现类,一个场景类
1.三个接口
观察者接口:Observer.java
被观察者接口:Observerable.java
被观察者业务接口(被观察者的行为):例子(IHanFeiZi.java)
2.一个被观察者实现类(实现被观察者接口和被观察者业务接口)
3.观察者(实现观察者接口)
观察者和被观察者接口java jdk已经提供:
被观察者业务接口(IHanFeiZi.java)
public interface IHanFeiZi { public void haveBreakfast(); public void haveFun(); }
被观察者实现类:(HanFeiZi.java)
public class HanFeiZi implements IHanFeiZi, Observerable{ private ArrayList<Observer> observerList = new ArrayList<Observer>(); @Override public void haveBreakfast() { System.out.println("韩非子:正在吃饭"); notifyObservers("韩非子正在吃饭"); } @Override public void haveFun() { System.out.println("韩非子:正在娱乐"); notifyObservers("韩非子正在娱乐"); } @Override public void addObserver(Observer observer) { observerList.add(observer); } @Override public void deleteObserver(Observer observer) { observerList.remove(observer); } @Override public void notifyObservers(String context) { for(Observer observer : observerList){ //发送通知给观察者 observer.update(context); } } }
观察者实现类:HanFeiZiWife.java
public class HanFeiZiWife implements Observer{ @Override public void update(String context) { System.out.println("韩非子妻子:这死鬼竟然在吃喝玩乐"); } }
场景类代码:
client.java
public class Client { public static void main(String[] args) { HanFeiZi hanFeiZi = new HanFeiZi(); HanFeiZiWife hanFeiZiWife = new HanFeiZiWife(); hanFeiZi.addObserver(hanFeiZiWife); hanFeiZi.haveBreakfast(); hanFeiZi.haveFun(); } }
相关推荐
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
Java设计模式是软件开发中的重要概念,它们是解决常见编程问题的经验总结,使得代码更加可复用、可扩展和易于维护。观察者模式(Observer Pattern)是这些模式中的一种,它在多对一的关系中使用,当一个对象的状态...
观察者模式,也被称为发布-订阅模式或事件驱动模式,是软件设计模式中的一种行为模式。这个模式的主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
观察者模式(Observer)是软件设计模式中的一种行为模式,其主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件开发中广泛应用于事件驱动...
**观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它在Java中有着广泛的应用。这个模式的核心思想是“一对多”的依赖关系,即一个主题对象(Subject)可以被多个观察者(Observer)关注,当主题...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...
首先,我们来看"Java设计模式——观察者模式的两种情况": 1. **主动通知**: 在这种情况下,被观察者对象在自身状态发生变化时,会主动调用`Observable`接口提供的`notifyObservers()`方法,将变化通知给所有注册的...
在Java编程领域,设计模式是一种被广泛采用的最佳实践,它为解决常见的软件设计问题提供...在Java中,`java.util.Observable`和`java.util.Observer`是内置的观察者模式实现,可以方便地用于快速构建观察者模式的系统。
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...
本篇文章将深入探讨“Observer”观察者模式,这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心概念是主题...
Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...
1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...