首页 > 其他分享 >12.2日报

12.2日报

时间:2024-12-13 10:45:03浏览次数:3  
标签:name Observer 日报 void public 12.2 price stock

今天完成软件设计实验二十一观察者模式,并且进一步学习了画数据流图,功能架构图

实验 21:观察者模式

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

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

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

 
   

 

 

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

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

实验要求:

1.     画出对应类图;

 

2.     提交源代码;

  1. import java.util.ArrayList;
    import java.util.List;

    // 观察者接口
    interface Observer {
        void update(float price);
    }

    // 具体观察者
    class ConcreteObserver implements Observer {
        private String name;

        public ConcreteObserver(String name) {
            this.name = name;
        }

        @Override
        public void update(float price) {
            if (price > 0) {
                buyStock();
            } else {
                cry();
            }
        }

        private void buyStock() {
            System.out.println(name + " 听到价格上涨,买了股票!");
        }

        private void cry() {
            System.out.println(name + " 听到价格下降,大哭了一场!");
        }
    }

    // 主题接口
    interface Subject {
        void attach(Observer o);
        void detach(Observer o);
        void notifyObservers();
    }

    // 具体主题
    class ConcreteSubject implements Subject {
        private List<Observer> observers = new ArrayList<>();
        private float price;

        @Override
        public void attach(Observer o) {
            observers.add(o);
        }

        @Override
        public void detach(Observer o) {
            observers.remove(o);
        }

        @Override
        public void notifyObservers() {
            for (Observer observer : observers) {
                observer.update(price);
            }
        }

        public void setPrice(float price) {
            this.price = price;
            notifyObservers();
        }

        public float getPrice() {
            return price;
        }
    }

    // 客户端代码
    public class ObserverPatternDemo {
        public static void main(String[] args) {
            ConcreteSubject stock = new ConcreteSubject();

            Observer alice = new ConcreteObserver("Alice");
            Observer bob = new ConcreteObserver("Bob");

            stock.attach(alice);
            stock.attach(bob);

            stock.setPrice(105); // 价格上涨5%
           
    stock.setPrice(95);  // 价格下降5%
       
    }
    }

 

4.     注意编程规范。

 

 

标签:name,Observer,日报,void,public,12.2,price,stock
From: https://www.cnblogs.com/lijianlongCode13/p/18604388

相关文章

  • 11.3日报
    完成软件构造实验,C/S架构,以下为部分今日代码:namespacetest1{partialclassmodifymanForm{///<summary>///Requireddesignervariable.///</summary>privateSystem.ComponentModel.IContainercomponents=null;......
  • 12.4日报
    完成机器学习B实验,以下为今日实验内容:实验四:SMO算法实现与测试一、实验目的深入理解支持向量机(SVM)的算法原理,能够使用Python语言实现支持向量机的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留......
  • 12.5日报
    今天完成软件设计实验二十二状态模式,以下为实验内容:实验22:状态模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解状态模式的动机,掌握该模式的结构;2、能够利用状态模式解决实际问题。     [实验任务一]:银行账户用Java代码模拟实现课堂上......
  • AI 口语学习应用 Speak 新一轮融资估值 10 亿美元;YouTube 推出 AI 多语言配音丨 RTE
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 作为管理者,要你设计一个日报(周报)的excel模板,你是如何?有什么原则?要查看哪些信息呢?
    作为一个管理者,为前端开发团队设计日报(周报)Excel模板,我的目标是简洁、高效地追踪项目进度、识别潜在问题并促进团队沟通。以下是我设计的模板以及背后的原则:原则:简洁明了:避免冗余信息,只收集必要的进度数据。易于填写:模板结构清晰,填写方便快捷,减少团队负担。数据驱动:......
  • 2024最新更新!!!人民日报文本数据(2013-2024年)
    文章目录数据下载地址数据指标说明项目备注数据下载地址数据下载地址点击这里下载数据数据指标说明数据名称:人民日报文本数据数据简介:人民日报文本数据是《人民日报》自创刊以来所发表的所有文章、报道、评论等内容的集合,它记录了中国的历史变迁、社会发展......
  • 上周热点回顾(12.2-12.8)
    热点随笔:· 网站刚上线,就被DDoS攻击炸了! (程序员鱼皮)· 终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名) (升讯威在线客服系统)· 翻到了我2016年的面试经历,那是一个互联网的黄金时代。 (why技术)· 瞧瞧别人家的参数校验,那叫一个优雅! (苏三说技术)......
  • Google PaliGemma 2 新增情绪识别能力;OpenAI 即将发布全新 Sora 视频生成器丨 RTE 开
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 通义开源语音处理框架 ClearerVoice-Studio;亚马逊 Nova 计划明年发布端到端语音模型丨
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 个人测试日报邮件怎么发
    1.风险与求助风险与求助本来是放在3.测试进展与风险的,但是不方便领导查看,所以改成放在最前面。风险是写版本测试的风险,比如转测时间太晚,测不完;问题太多,开发问题解决慢,开发反复引入问题;严重问题阻塞测试等,要附上测试责任人,开发责任人,SE求助是自己解决不了的问题需要向领导求......