观察者模式
实验 21:观察者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解观察者模式的动机,掌握该模式的结构;
2、能够利用观察者模式解决实际问题。
[实验任务一]:股票提醒
当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。
类图
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | package test21; import java.util.ArrayList; public class Gufen extends Subject{ public void up(){ System.out.println( "****股份上涨15%****" ); for (Observer guan:observers){ guan.buy(); } } public void down(){ System.out.println( "****股份下跌15%****" ); for (Observer guan:observers){ guan.cry(); } } } package test21; public class Gumin implements Observer{ private String name; public Gumin(String a){name=a;} public void buy(){ System.out.println( "股民" +name+ "买了一些股票" ); } public void cry(){ System.out.println( "股民" +name+ "哭了" ); } } package test21; public class main { public static void main(String[] args) { Gufen f= new Gufen(); Gumin g1= new Gumin( "小张" ); Gumin g2= new Gumin( "小龚" ); f.attach(g1); f.attach(g2); f.up(); f.down(); } } package test21; public interface Observer { public void buy(); public void cry(); } package test21; import java.util.ArrayList; public abstract class Subject { protected ArrayList<Observer> observers; public Subject(){ observers= new ArrayList<>(); } public void attach(Observer a){ observers.add(a); } public void detach(Observer a){ observers.remove(a); } public abstract void up(); public abstract void down(); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端