qwb0614

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  187 随笔 :: 0 文章 :: 0 评论 :: 2048 阅读

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

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

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

 
   

 


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

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

实验要求:

1.     提交源代码;

 

2.     提交类图;

3.     注意编程规范。

复制代码
package ruanjiansheji.shiyan21;

public class ConcreteObserver implements Observer{
    public void response(int rote)
    {
        if(rote <= -1)
        {
            System.out.println("大哭一场");
        }else if(rote>=5)
            System.out.println("买股票");
    }
}
package ruanjiansheji.shiyan21;

public class ConcreteSubject extends Subject{
    public void notifyObserver()
    {
        System.out.println("具体目标发生改变...");
        System.out.println("--------------");

        for(Object obs:observers)
        {
            ((Observer)obs).response(-5);
        }
    }
}
package ruanjiansheji.shiyan21;

public class Main {
    public static void main(String[] args) {
        Subject subject=new ConcreteSubject();
        Observer obs1=new ConcreteObserver();
        subject.add(obs1);
        subject.notifyObserver();
    }
}
package ruanjiansheji.shiyan21;

public interface Observer {
    void response(int rote); //反应
}
package ruanjiansheji.shiyan21;

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

public abstract class Subject {
    protected List<Observer> observers=new ArrayList<Observer>();
    //增加观察者方法
    public void add(Observer observer)
    {
        observers.add(observer);
    }
    //删除观察者方法
    public void remove(Observer observer)
    {
        observers.remove(observer);
    }
    public abstract void notifyObserver(); //通知观察者方法
}
复制代码

 

posted on   嘎嘎鸭1  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示