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

实验 21:观察者模式

时间:2024-11-20 08:55:49浏览次数:1  
标签:Gumin 21 void 观察者 System 实验 println public out

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

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

实验要求:

1. 画出对应类图;

2. 提交源代码;

3. 注意编程规范。

1.类图

 2.源代码

import java.util.ArrayList;

// 观察目标类
public class Fen {
    private ArrayList<Guancha> oblist;

    public Fen() {
        oblist = new ArrayList<>();
    }

    public void add(Guancha a) {
        oblist.add(a);
    }

    public void remove(Guancha a) {
        oblist.remove(a);
    }

    public void sheng(double a) {
        if (a > 0.05)
            for (Guancha guan : oblist) {
                guan.sheng();
            }
    }

    public void jiang(double a) {
        if (a > 0.05)
            for (Guancha guan : oblist) {
                guan.jiang();
            }
    }
}

// 观察者接口
public interface Guancha {
    public void sheng();
    public void jiang();
}

// 具体观察者类
public class Gumin implements Guancha {
    private String name;

    public Gumin(String a) {
        name = a;
    }

    public void sheng() {
        System.out.println(name + "买了一些股票(股票升了)");
    }

    public void jiang() {
        System.out.println("股票降价了,哭了");
    }
}

// 主类
public class Main {
    public static void main(String[] args) {
        Fen f = new Fen();
        Gumin g1 = new Gumin("第一个股民");
        Gumin g2 = new Gumin("第二个股民");
        f.add(g1);
        f.add(g2);
        System.out.println("股票升了");
        f.sheng(0.1);
        System.out.println("比率小于0.05");
        System.out.println();
        f.sheng(0.001);

        System.out.println("股票降了");
        f.jiang(0.1);
        System.out.println("比率小于0.05");
        System.out.println();
        f.jiang(0.001);
    }
}

 

标签:Gumin,21,void,观察者,System,实验,println,public,out
From: https://www.cnblogs.com/po3a/p/18556044

相关文章

  • LCR 021. 删除链表的倒数第 N 个结点(中等)(主站19)
    https://leetcode.cn/problems/SLwz0R/https://leetcode.cn/problems/remove-nth-node-from-end-of-list/难度:☆☆☆题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]输入:head=[1],n=1输出......
  • 昊星新品发布会以三大主张、四大新品开创实验室安全新纪元
    【2024年11月19日,上海】    珠海昊星自动化系统有限公司(以下简称“昊星”)在2024年慕尼黑上海分析生化展上成功举办新品发布会。本次发布会深入展示了昊星在“匠心、创新、智慧化”方面的融合实践,彰显了昊星在实验室气流控制领域的技术实力和产品优势。多位行业专家出席......
  • 2000-2021年上市公司重污染行业认定与测算数据政策文件及DO文件汇总(5.2万条数据)
    上市公司重污染行业认定测算数据政策文件和DO文件可以用于进行以下类型的研究:环境政策分析:这些文件可以帮助研究人员了解ZF或监管机构对于重污染行业的监管政策和措施。研究可以包括政策的历史演变、目标和目标的设定,以及监管的严格程度。行业影响分析:研究可以分析这些政......
  • 20222318 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容1.1实验要求掌握Metasploit的使用方法:“Search——Use——Show——Set——Exploit/run”。1.2实验任务(1)前期渗透(2)Vsftpd源码包后门漏洞(21端口)(3)SambaMS-RPCShell命令注入漏洞(端口139)(4)JavaRMISERVER命令执行漏洞(1099端口)(5)PHPCGI参数执行注入漏洞(80端口)1.3......
  • 121. 买卖股票的最佳时机
    给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获......
  • JDK21新增特性
    顺序集合(SequencedCollections)提供了几个新的接口,用于实现有序的集合。在没有提供有序集合操作之前,我们进行集合的序列操作一般如下FirstelementLastelementListlist.get(0)list.get(list.size()-1)Dequedeque.getFirst()deque.getLast()SortedSet......
  • 1021 Deepest Root(树的直径、bfs/dfs、并查集)
     先通过并查集判断有几个连通图,如果只有一张图,那就用两次dfs/bfs来找到树的直径上的所有端点1#include<bits/stdc++.h>2usingnamespacestd;3intn;4vector<int>edges[10005];5boolvisited[10005]={false};6set<int>temp;//记录该次dfs筛选出树直径......
  • 2024/11/19日 日志 数据结构实验(2)---栈实现表达式求值、队列应用(蓝桥杯)
    栈实现表达式求值问题:https://pintia.cn/problem-sets/1858366427985383424/exam/problems/type/7?problemSetProblemId=1858366732315615232解答:点击查看代码#include<bits/stdc++.h>usingnamespacestd;//运算符优先级intprecedence(charop){switch(op){......
  • 2024/11/18日 日志 数据结构实验(1)---链表逆置、线性表A,B顺序存储合并、双向循环链表应
    链表逆置题目:https://pintia.cn/problem-sets/1855808612225744896/exam/problems/type/6?problemSetProblemId=1855808768018968576解答:点击查看代码structListNode*reverse(structListNode*head){structListNode*prev=NULL;structListNode*current=head;......
  • 数据结构之堆栈的操作实现(实验报告版)
    一、堆栈是什么(原理)    在数据结构中,堆栈(Stack)是一种特殊的线性表,它遵循后进先出(LIFO,LastInFirstOut)的原则。堆栈的基本操作主要包括压栈(Push)、弹栈(Pop)、查看栈顶元素(Peek或Top)、检查栈是否为空(IsEmpty)以及获取栈的大小(Size)。以下是一个简单的堆栈操作实现,使用......