首页 > 其他分享 >实验 21:观察者模式

实验 21:观察者模式

时间:2023-12-09 20:58:26浏览次数:28  
标签:Gumin java 21 Observer void 观察者 observers 实验 public

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解观察者模式的动机,掌握该模式的结构;

2、能够利用观察者模式解决实际问题。

 

[实验任务一]:股票提醒

当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。

实验要求:

1. 提交源代码;

2. 提交类图;

//Observer.java

package shiyan21;

 

public interface Observer {

    public void buy();

    public void cry();

}

//Subject.java

package shiyan21;

 

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();

}

//Gufen.java

package shiyan21;

 

import java.util.ArrayList;

public class Gufen extends Subject{

    public void up(){

        System.out.println("****股份上涨5%****");

        for(Observer guan:observers){

            guan.buy();

            }

    }

    public void down(){

        System.out.println("****股份下跌5%****");

        for(Observer guan:observers){

            guan.cry();

            }

    }

}

//Gumin.java

package shiyan21;

 

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+"哭了");

    }

}

//main.java

package shiyan21;

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();

    }

}

标签:Gumin,java,21,Observer,void,观察者,observers,实验,public
From: https://www.cnblogs.com/lin513/p/17891465.html

相关文章

  • 实验 22:状态模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解状态模式的动机,掌握该模式的结构;2、能够利用状态模式解决实际问题。 [实验任务一]:银行账户用Java代码模拟实现课堂上的“银行账户”的实例,要求编写客户端测试代码模拟用户存款和取款,注意账户对象状态和行为的......
  • 实验15:职责链模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解职责链模式的动机,掌握该模式的结构;2、能够利用职责链模式解决实际问题。 [实验任务一]:财务审批某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副......
  • 实验16:命令模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解命令模式的动机,掌握该模式的结构;2、能够利用命令模式解决实际问题。 [实验任务一]:多次撤销和重复的命令模式某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集......
  • 实验14:代理模式
    [实验任务一]:婚介所婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。实验要求:1. 提交类图;、2.提交源代码;3.注意编程规范。packageorg.example;publicclas......
  • 「杂题乱刷」洛谷P1216
    题目链接一道dp的入门题。\(O(2^n)\):考虑直接爆搜,可以考虑到所有情况。\(O(n^2)\):考虑\(dp\),设\(dp_{i,j}\)代表到达第\(i\)层第\(j\)个数所能达到的最大值。状态转移方程为\(dp_{i,j}=a_{i,j}+\max(dp_{i-1,j-1},dp_{i-1,j})\)。最终答案就是\(\max(dp_{n,1},d......
  • 初中英语优秀范文100篇-021Sophia the Robot-机器人索菲亚
    PDF格式公众号回复关键字:SHCZFW021记忆树1WhenitcomestoAI,Sophiatherobotismentionedagainandagain.翻译说到人工智能,总是会反复提到机器人索菲亚。简化记忆反复句子结构句子结构分析:主句:Sophiatherobotismentionedagainandagain.主语:Sophia......
  • 【单片机】实验七:定时计数器实验
    #include<STC8.H>/*#定时计数器溢出发生中断原理实验@2023N12Y7R#P1:控制显示内容#P2:控制显示位置实验目的:利用单片机内部定时器T0或者T1,控制一个LED数码管实现数字0-9循环显示,精确执行每一秒显示一个数字*/unsignedcharled[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7......
  • AP6212 是正基科技推出一种低成本、低功耗模块其中有所有的WiFi,蓝牙和FM功能
    AP6212 是正基科技推出一种低成本、低功耗模块其中有所有的WiFi,蓝牙和FM功能。高度集成模块使网页浏览,VoIP,蓝牙耳机,FM收音机功能的可能性应用及其他应用。具有无缝漫游功能和先进安全,也可以用不同的厂商支持802.11b/g/n无线接入点的作用局域网.无线模块符合IEEE802.11B/G/N......
  • 第七届全国计算生物学与生物信息学学术会议暨人工智能与生物医学信息学大会(NCCBB2021
    第七届全国计算生物学与生物信息学学术会议暨人工智能与生物医学信息学大会(NCCBB2021)是由中国生物工程学会计算生物学与生物信息学专业委员会联合上海交通大学、滨州医学院、中国交叉科学学会等单位共同主办的全国性计算生物学和生物信息学领域的高水平学术会议,每年举办一次。第七......
  • CCF生物信息学前沿科学系列论坛暨2021年生物信息学广州高端论坛 广州,2021年4月16日-
      http://www2.scut.edu.cn/_upload/tpl/08/ae/2222/template2222/main.htm   CCF生物信息学前沿科学系列论坛暨2021年生物信息学广州高端论坛广州,2021年4月16日-18日        宏观影像组学的快速发展和微观多组学的成功应用极大的推动影像基因组学研究。......