观察者模式--设计模式2

2024-05-07 19:08

本文主要是介绍观察者模式--设计模式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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968135

相关文章

Java之责任链模式

一.前言 在公司一般的请假流程中,1天或者以下由组长批准,1-3天的由组长,经理审批,如果是3-7天的由组长,经理,部门领导审批,如果大于7天的则有上级批准。这种模式在设计模式里面的责任链模式可以得到很好的运用,下面用这个该模式实现体会一下责任链模式的好处。 二.定义 定义:将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能处理则处理

“联宝360“项目深度解析:创新模式与互助机制

大家好,我是吴军,来自一家知名的互联网科技公司,负责产品策略分析。 最近,我观察到社交网络上出现了一个名为“联宝360”的热门项目,它引发了众多团队长的热烈讨论和积极推广。这个项目虽然是在今年年初刚刚启动的,但其在短时间内迅速积累了大量关注,这背后离不开原力、佛萨奇等资深团队长倪振达的精心策划与推动。 在此,我需要强调的是,本文仅是对“联宝360”项目的模式制度进行客观解析,并不涉及任

java版数字藏品深色UI仿鲸探数藏盲盒合成短视频卡牌模式支持高并发功能介绍

根据您提供的艺术品发售系统的需求,以下是一个更为详细和全面的系统设计概述: 1. 藏品发售 藏品分类:藏品可以按照不同的类别进行分类,如绘画、雕塑、摄影等。稀有度设置:后台可以为每个藏品设置不同的稀有度,如普通、稀有、史诗、传说等,并设置相应的售价。购买限制:可以设定购买数量限制、用户等级限制等。 2. 二级市场 交易系统:用户可以将自己的藏品直接挂售到二级市场商城,并设定售价。交易记录:

软考--软件设计师--试题六--工厂方法模式(Factory Method)

工厂方法模式(Factory Method) 1、意图 定义一个用于创建对象的接口,让子类决定实例化哪儿一个类,factory method使一个类的实例化延迟到其子类。 2、结构 3、适用性 a、当一个类不知道它所必须创建的对象的类的时候。 b、当一个类希望由它的子类来指定它所创建的对象的时候。

局部二进制模式

局部二进制模式(Local Bimary Pattern)是应用于掌纹特征提取的一种方法,是一种有效的纹理描述算子。         设 T 为灰度图像某领域内个像素点灰度值的联合分布函数, 即                       其中,gc 为中心像素点的灰度值,其余为周围的像素灰度值。在不丢失信息的情况 具体参考 http://www.doc88.com/p-85822

设计模式(一)-策略模式

策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 代码示例 每种类型的鸭子具有不同属性行为,我们把每种类型行为定义为接口,然后每种行为具体的类型就是实现这些接口的具体类。鸭子父类使用每种行为的接口类型来接收具体的行为类,然后调用具体行为的方法。需要更改某个具体鸭子的行为时,只需要更改注入的相关具体行为实现类 飞行行为 /***

Java设计模式-责任链(九)

责任链定义 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任 责任链涉及到对象 抽象处理者:一个方法控制当前节点需要处理或执行的任务,是否需要提交给下一个

VMware Fusion 13.5.2 for Mac 发布,产品订阅模式首个重大变更

VMware Fusion 13.5.2 for Mac 发布,产品订阅模式首个重大变更 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-fusion-13/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 好消息是:今天我们可以免费使用 VMware

win10用管理员模式打开CMD

win10 右键没有管理员打开cmd,怎么用管理员模式打开CMD?最最简单的办法! win10在1803后右键开始菜单就没有cmd选项了,但是发现了一种隐藏的方法停! win10在1803后右键开始菜单就没有cmd选项了,但是发现了一种隐藏的方法 Windows键加R调出运行,然后CMD,** 停! **不要急着按回车 按住Ctrl+shift再加+回车(右侧三联),当当

【再探】设计模式—桥接模式、组合模式及享元模式

结构型设计模式描述了对象与类之间的关系。适配器模式及装饰器模式主要用于接口适配及功能增强,而桥接模式模式则是为了减少类的数量,组合模式让部分与容器能被客户端统一对待处理,享元模式则是用于节约系统内存,提高系统性能。 1 桥接模式 需求:一个类存在多个纬度,且每个纬度都需要独立进行扩展。例如,Coffee类,它有尺寸及口味两个纬度,这两个纬度有不同的扩展,比如有大杯、小杯,加糖及不加糖。 而且