首页 > 其他分享 >11.22

11.22

时间:2024-12-18 17:53:06浏览次数:3  
标签:11.22 void System println public MyObserver out

软件设计                  石家庄铁道大学信息学院

 

实验 21:观察者模式

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

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

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

 

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

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

实验要求:

1. 类图;

 

 

2. 源代码;

①、MySubject.java

package org.example.shiyanershiyi;


import java.util.ArrayList;

public abstract class MySubject {

    protected ArrayList<MyObserver> observers = new ArrayList<MyObserver>();

    //注册方法
    public void attach(MyObserver observer) {

        observers.add(observer);

    }

    //注销方法
    public void detach(MyObserver observer) {

        observers.remove(observer);

    }

    //抽象通知方法
    public abstract void change(int rate);

}

 

②、MyObserver.java

package org.example.shiyanershiyi;

public interface MyObserver {

    void response(int rate);
}

 

③、Holder.java

package org.example.shiyanershiyi;


public class Holders implements MyObserver {

    public void response(int rate) {

        if (rate >= 5) {

            System.out.println("股票上涨,买买买");

        } else if (rate <= -5) {

            System.out.println("股票下跌,大哭一场");

        } else {

            System.out.println("股票比较稳定,还好还好");

        }

    }

}

 

④、Stock.java

package org.example.shiyanershiyi;

public class Stock extends MySubject {
    public void change(int rate) {
        for (Object obs : observers) {
            ((MyObserver) obs).response(rate);
        }
    }
}

 

⑤、Client.java

package org.example.shiyanershiyi;

public class Client {
    public static void main(String args[]) {
        MySubject subject = new Stock();
        MyObserver obs1;
        obs1=new Holders();
        subject.attach(obs1);
        System.out.println("****股票上涨****");
        subject.change(5);
        System.out.println("");
        System.out.println("****股票下跌****");
        subject.change(-5);
        System.out.println("");
        System.out.println("****股票稳定****");
        subject.change(4);
        System.out.println("");
    }
}

 

3. 运行结果。

 

 

 

 

标签:11.22,void,System,println,public,MyObserver,out
From: https://www.cnblogs.com/zzqq1314/p/18615580

相关文章

  • 11.22 每日总结(单例模式)
    今天学习单例模式单例模式定义:确保一个类最多只有一个实例,并提供一个全局访问点单例模式可以分为两种:预加载和懒加载 预加载顾名思义,就是预先加载。再进一步解释就是还没有使用该单例对象,但是,该单例对象就已经被加载到内存了。publicclassPreloadSingleton{publi......
  • 11.22
    4 . 阿姆达尔定律阿姆达尔定律是由计算机工程先锋基恩 • 阿姆达尔(GeneAmdahl)提出并用他的名字命名的,它定义了优化一部分代码对整体性能有多大改善。阿姆达尔定律有多种表达方式,不过就优化而言,可以表示为下面的等式:(1 )S(t)=1/(1-P)+P/S(p)其中 S(t) 是因优化而导致程序......
  • 11.22实验 21:观察者模式
    [实验任务一]:股票提醒当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。实验要求:1. 画出对应类图;  2. 提交源代码;packageobserver; importjava.util.ArrayList; publicabstractclassSubject{......
  • 11.22日报
    今天完成人机交互实验,以及软件构造实验。人机交互实验内容,完成了统计的界面,以下为代码:namespacetest1{partialclasscountForm{///<summary>///Requireddesignervariable.///</summary>privateSystem.ComponentModel.I......
  • 代码随想录之滑动窗口、螺旋矩阵、区间和、开发商土地;Java之数据结构、集合源码、File
    代码随想录滑动窗口1、如果给两个字符串s和t,判断t是否为s的子串或是否s包含t的排列,用t的长度固定滑动窗口的大小,初始化将s的前t.length()个长度的字符情况存储在int数组中,int数组的大小由字符串中字符的类型决定,最大为ascii表的长度,为128。  每次循环滑动窗口向前移一位,即lef......
  • 总结本学期阅读的三本书(2024.11.22)
    作为一名软件工程系的学生,在深入研读《代码大全》《人件集》和《用户故事与敏捷方法》这三本书后,我收获了极为丰富且系统的知识与深刻感悟,对于在专业领域的成长起到了的推动作用。《代码大全》是软件构建领域的核心指南。它全面而细致地涵盖了从代码规范的精准界定到设计原则的......
  • 2024.11.22(周五)
    当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。实验要求:1.    画出对应类图;2.    提交源代码;3.    注意编程规范。  1、类图  2、源代码#include<iostream>#include<list>using......
  • 11.22判断是否存在
    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@pageimport="java.sql.*"%><%@pageimport="javax.naming.*"%><%@pageimport="javax.*"%><html><body&g......
  • 11.22
    今天实现bean类Attendancepackagecom.example.pojo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;@AllArgsConstructor@NoArgsConstructor@DatapublicclassAttendance{privateintid;privateStringattenda......
  • 11.22
    1.定义一个结构体变量(包括年、月、日),计算该日在本年中是第几天,注意闰年的问题。程序代码:#include<stdio.h> typedefstruct{   intyear;   intmonth;   intday;}Date; //计算是否为闰年intisLeapYear(intyear){   return(year%4==0......