软件设计二十一

 

 

实验 21:观察者模式

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

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

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

 

 

 

 

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

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

实验要求:

1.     画出对应类图;

 

 

2.     提交源代码;

//Observer.java

 

public interface Observer {

    public void buy();

    public void cry();

}

//Subject.java

 

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

 

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

 

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

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

    }

}

3.     运行结果

 

 

 

 

posted @   连师傅只会helloword  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
历史上的今天:
2023-11-23 记录今天最后一个bug
2023-11-23 前端vue使用表单form或表格table时的注意事项
2023-11-23 前端vue在表单tableData中scope的注意事项
2023-11-23 springboot后端Controller中传递参数的注意事项
点击右上角即可分享
微信分享提示