【设计模式_观察者模式/发布订阅】观察者模式_股票案列

编程中常见的技术难题有哪些?

编程中常见的技术难题有如同一道道难题,比如bug像隐藏的恶魔,让程序员们捉摸不透;性能优化就像是调整汽车引擎,需要精准的调校;还有就是跨平台兼容性,就像是翻译不同语言,需要找到最佳的沟通方式。面对这些难题,程序员们就像是解密高手,不断寻找突破口,解决问题。

题目

**任务一:使用观察者模式设计在线股票软件的股票变化功能
某在线股票软件需要提供如下功能:当股票购买者的某支股票价格变化幅度达到5%时,系统将自动发送通知(包括新价格)给购买该股票的股民。现使用观察者设计该系统。
请完成该系统类图设计和实现编程。编程实现运行结果参考下图:
**在这里插入图片描述

分析

发布/订阅模式;

  1. 通知者/发布者 (publisher)Stock
  2. 订阅者(subscriber)Investor

具体的实现,我们需要使用发布者和订阅者的接口实现类来实现;
具体:
在这里插入图片描述
在这里插入图片描述

Investor代表多个订阅者,可以是一个array list集合形似…

代码

publisherStock 抽象发布者

public abstract class Stock {protected String symbol;protected double price;private ArrayList<Investor> investors=new ArrayList<Investor>();public Stock(String symbol, double price) {super(); this.symbol = symbol; this.price = price; } 	
public String getSymbol() { 		
return symbol; } 	
public void setSymbol(String symbol) { this.symbol = symbol; } 	
public double getPrice() {return price; } 	
public void setPrice(double price) { 	this.price= price; 		
> Notify();
> } 	 	
public void Attach(Investor investor) { 		
investors.add(investor); 	
} 	 	
public void Detach(Investor investor)
{ 		
investors.remove(investor); } 	
public void Notify() {for(Investor i:investors) 	i.Update(this); } 
}

StockPubuliser具体发布者

public class IBM extends Stock {/*** @param symbol* @param price*/public IBM(String symbol, double price) {super(symbol, price);}
}

订阅者-抽象

订阅者-具体的订阅的股民

reference

reference-subscriber-publiser

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/221992.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美女骑士开箱VELO Angel TT,银色天使,无痛骑行

阳光、女孩、自行车&#xff0c;脸上的笑容或明媚&#xff0c;或神秘&#xff0c;或青涩&#xff0c;在这个时候&#xff0c;世界上没有什么比骑行女孩更美的了&#xff01;      在北京&#xff0c;有一个热爱骑行的女孩&#xff0c;名叫季思铭&#xff0c;目前是中国农业…

【Cisco Packet Tracer】电子邮箱仿真搭建

本文使用Cisco Packet Tracer&#xff0c;搭建电子邮箱仿真系统&#xff0c;使得zhangsancisco.com可以和lisicisco.com可以互相发送邮件。 电子邮箱账号&#xff08;为了简单起见&#xff0c;账号密码设置一致&#xff09;&#xff1a;zhangsan/lisi 域名&#xff1a;cisco.…

KaiwuDB 亮相中国 5G + 工业互联网大会,助力新型工业化

11月19-21日&#xff0c;由各相关政府部门共同主办的“2023 中国 5G工业互联网大会”在湖北武汉盛大举行。作为我国“5G工业互联网”领域的国家级顶会&#xff0c;本届大会以“数实融合&#xff0c;大力推进新型工业化”为主题&#xff0c;聚焦新型基础设施、产业转型升级、技术…

Codeforces Round 911 (Div. 2) --- D题题解

D. Small GCD Problem - D - Codeforces 题目大意&#xff1a; 给你一个数组&#xff0c;你可以在里面任选三个数ai aj ak&#xff0c;要求i j k 互不相同&#xff0c; 现定义一个函数f(a,b,c)gcd(a,b)&#xff0c;其中a 和 b为a&#xff0c;b&#xff0c;c中较小的两个。求f…

数字技术,为企业全面预算管理贡献数智力量

近年来&#xff0c;我国数字技术的急速发展使得企业预算管理方式产生了诸多变化。先进的技术是全面预算管理系统被广泛应用的保障&#xff0c;企业管理也逐渐从传统的独立信息化系统朝着数智化、自动化主导的集群方向转变。以数据为核心、技术为支撑的全面预算管理系统&#xf…

【云平台】STM32微信小程序阿里云平台学习板

【云平台】STM32微信小程序阿里云平台学习板 文章目录 前言一、立创EDA&#xff08;硬件设计&#xff09;1.主控STM32F103C8T62.ESP8266模块3.温湿度模块4.光照强度模块5.OLED显示模块6.PCB正面7.PCB反面8.3D视角正面9.3D视角反面 二、【云平台】STM32微信小程序阿里云平台学习…

视频做成二维码的简易教程(收藏)

视频做成二维码的简易教程&#xff0c;由于面向免费用户是5G&#xff0c;普通用户是可以够用的&#xff0c;所以可以推荐给大家&#xff0c;值得一试 以下几点&#xff0c;是您需要了解的&#xff1a; 01.稳定流畅 提供高稳定性&#xff0c;超流畅的企业级视频服务 02.节省成…

国产Ai大模型和chtgpt3.5的比较

下面是针对国产大模型&#xff0c;腾讯混元&#xff0c;百度文心一言&#xff0c;阿里通义千问和chatgpt的比较&#xff0c;最基础的对一篇文章的单词书进行统计&#xff0c;只有文心一言和chatgpt回答差不多&#xff0c;阿里和腾讯差太多了

程序的机器级表示

程序的机器级表示 有关CSAPP第三章一些我关注到的重点的记录 操作指令 .c->.exe的流程 1.选项 -E : 预编译过程,处理宏定义和include&#xff0c;并作语法检查 gcc -E hello.c -o hello.i #将hello.c预处理输出为hello.i文件2.选项 -S : 编译过程,生成通用…

BUUCTF刷题之路--ciscn_2019_es_21

这题考察的是一个栈迁移的知识。作为入门学习栈迁移是个不可多得的好题。程序简单并且是32位的架构。保护也没有开&#xff0c;因此对于理解栈迁移再好不过了。看一下这题的基本信息&#xff1a; 栈迁移的基本原理其实就是栈的空间不够我们利用。也就是不不足以覆盖返回地址&am…

Linux 网络通信

(一)套接字Socket概念 Socket 中文意思是“插座”&#xff0c;在 Linux 环境下&#xff0c;用于表示进程 x 间网络通信的特殊文件 类型。本质为内核借助缓冲区形成的伪文件。 既然是文件&#xff0c;那么理所当然的&#xff0c;我们可以使用文件描述符引用套接字。Linux 系统…

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——Eigen库 本章将介绍视觉SLAM的基本问题之一&#xff1a;如何…