qwb0614

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

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 2023-12-17 13:58  嘎嘎鸭1  阅读(40)  评论(0)    收藏  举报