观察者模式-大话设计模式

简介: 观察者模式-大话设计模式

一、介绍

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

 

二、代码实现

 
import java.util.ArrayList;
 
//主题
public class Subject {
    protected String name;
 
    public Subject(String name) {
        this.name = name;
    }
 
    //同事列表
    private ArrayList<Observer> list = new ArrayList<>();
    private String action;
 
    //增加同事
    public void attach(Observer observer) {
        list.add(observer);
    }
 
    //通知
    public void notifyEmployee() {
        for (Observer item : list) {
            item.update();
        }
    }
 
    //获取通知
    public void setAction(String action) {
        this.action = action;
    }
 
    //设置通知
    public String getAction() {
        return this.action;
    }
}
 
//前台秘书类
public class Secretary  extends Subject{
 
    public Secretary(String name) {
        super(name);
    }
 
 
}
//boos
public class Boss extends Subject{
 
    public Boss(String name) {
        super(name);
    }
 
 
}
//观察者
public abstract class Observer {
    protected String name;
    protected  Subject sub;
 
    public Observer(String name, Subject sub) {
        this.name = name;
        this.sub = sub;
    }
    public abstract  void update();
}
public class StockObserver extends Observer {
 
    public StockObserver(String name, Subject sub) {
        super(name, sub);
    }
 
    public void update() {
        System.out.println(this.sub.name + ": " + this.sub.getAction() + this.name + ",股票,请开始工作。");
    }
}
 
public class NBAObserver extends Observer{
 
 
    public NBAObserver(String name, Subject sub) {
        super(name,sub);
    }
 
    public void update() {
        System.out.println(this.sub.name + ": " + this.sub.getAction() + this.name + ",NBA,请开始工作。");
    }
}
  public static void main(String[] args) {
        Subject secretary1=new Secretary("童子喆");
 
        Observer employee1=new StockObserver("zhangsan",secretary1);
        Observer employee2=new NBAObserver("lisi",secretary1);
 
        secretary1.attach(employee1);
        secretary1.attach(employee2);
 
        secretary1.setAction("老板回来了.");
        secretary1.notifyEmployee();
    }
目录
相关文章
|
1月前
|
设计模式 PHP
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
17 0
|
1月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
1月前
|
设计模式 监控 Java
设计模式 - 观察者模式(Observer):Java中的战术与策略
【4月更文挑战第7天】观察者模式是构建可维护、可扩展系统的关键,它在Java中通过`Observable`和`Observer`实现对象间一对多的依赖关系,常用于事件处理、数据绑定和同步。该模式支持事件驱动架构、数据同步和实时系统,但需注意避免循环依赖、控制通知粒度,并关注性能和内存泄漏问题。通过明确角色、使用抽象和管理观察者注册,可最大化其效果。
|
1月前
|
设计模式 存储 Java
【设计模式】观察者模式
【设计模式】观察者模式
|
23天前
|
设计模式 消息中间件 存储
跟着GPT学设计模式之观察者模式
观察者模式是一种行为型设计模式,它定义了对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,其依赖对象都能够收到通知并自动更新。一般情况下,被依赖的对象叫作被观察者(Observable),依赖的对象叫作观察者(Observer)。
16 1
|
3天前
|
设计模式 存储 Java
Java设计模式之观察者模式详解
Java设计模式之观察者模式详解
|
9天前
|
设计模式 存储
行为型设计模式之观察者模式
行为型设计模式之观察者模式
|
1月前
|
设计模式 Java
Java一分钟之-设计模式:观察者模式与事件驱动
【5月更文挑战第17天】本文探讨了Java中实现组件间通信的观察者模式和事件驱动编程。观察者模式提供订阅机制,当对象状态改变时通知所有依赖对象。然而,它可能引发性能问题、循环依赖和内存泄漏。代码示例展示了如何实现和避免这些问题。事件驱动编程则响应用户输入和系统事件,但回调地狱和同步/异步混淆可能造成困扰。JavaFX事件驱动示例解释了如何处理事件。理解这两种模式有助于编写健壮的程序。
30 1
|
22天前
|
设计模式 前端开发 NoSQL
设计模式第八讲:观察者模式和中介者模式详解
 定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
177 0
|
1月前
|
设计模式 JavaScript 前端开发
js设计模式-观察者模式与发布/订阅模式
观察者模式和发布/订阅模式是JavaScript中的两种设计模式,用于处理对象间的通信和事件处理。观察者模式中,一个主题对象状态改变会通知所有观察者。实现包括定义主题和观察者对象,以及在主题中添加、删除和通知观察者的功能。发布/订阅模式则引入事件管理器,允许发布者发布事件,订阅者通过订阅接收通知。

热门文章

最新文章