`

java设计模式之观察者模式(Observer)

 
阅读更多

一、使用场景:

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)

    结合微信公众号讲解观察者模式,生动形象,关键是上手快啊

    java设计模式之观察者模式

    Java设计模式是软件开发中的重要概念,它们是解决常见编程问题的经验总结,使得代码更加可复用、可扩展和易于维护。观察者模式(Observer Pattern)是这些模式中的一种,它在多对一的关系中使用,当一个对象的状态...

    设计模式之观察者模式(Observer Pattern)

    观察者模式,也被称为发布-订阅模式或事件驱动模式,是软件设计模式中的一种行为模式。这个模式的主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并...

    设计模式之观察者模式Java实现

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    设计模式之观察者模式(Observer)

    观察者模式(Observer)是软件设计模式中的一种行为模式,其主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动...

    [行为模式]head first 设计模式之观察者模式(observer)

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件开发中广泛应用于事件驱动...

    java23种设计模式之观察者模式

    **观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它在Java中有着广泛的应用。这个模式的核心思想是“一对多”的依赖关系,即一个主题对象(Subject)可以被多个观察者(Observer)关注,当主题...

    java 设计模式 观察者模式 简单实例 包括测试test类

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...

    设计模式--观察者模式java例子

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    java观察者模式观察者模式

    观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...

    Java设计模式——观察者模式

    首先,我们来看"Java设计模式——观察者模式的两种情况": 1. **主动通知**: 在这种情况下,被观察者对象在自身状态发生变化时,会主动调用`Observable`接口提供的`notifyObservers()`方法,将变化通知给所有注册的...

    java设计模式系列之观察者模式代码

    在Java编程领域,设计模式是一种被广泛采用的最佳实践,它为解决常见的软件设计问题提供...在Java中,`java.util.Observable`和`java.util.Observer`是内置的观察者模式实现,可以方便地用于快速构建观察者模式的系统。

    详解Observer Pattern(观察者模式)在Java中的使用原理

    我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...

    设计模式之略见一斑(Observer观察者模式)

    本篇文章将深入探讨“Observer”观察者模式,这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心概念是主题...

    Observer设计模式实例

    Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...

    Java设计模式 设计模式介绍

    1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...

Global site tag (gtag.js) - Google Analytics