2023/10/26 每日总结

今天完成了设计模式 实验21

实验 21:观察者模式

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

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

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

 

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

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

类图

 

 

package org.test21;

public interface Observer {
    void update(String state);
}


package org.test21;

public class Stock extends Subject{
    private String subjectState;

    public String getSubjectState() {
        return subjectState;
    }

    public void setSubjectState(String subjectState) {
        this.subjectState = subjectState;
    }

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




package org.test21;

public class StockHolder implements Observer{
    @Override
    public void update(String state) {
        if (state.equals("up")){
            System.out.println("股票升,买入");
        }
        if (state.equals("down")){
            System.out.println("股票降,痛哭");
        }
    }
}



package org.test21;


import java.util.ArrayList;

public class Subject {
    protected ArrayList<Observer> observers=new ArrayList<>();
    public void attach(Observer observer){
        observers.add(observer);
    }
    public void detach(Observer observer){
        observers.remove(observer);
    }
    public void inform(){

    }
}



package org.test21;

public class Client {
    public static void main(String[] args) {
        Stock stock = new Stock();
        StockHolder stockHolder = new StockHolder();
        stock.attach(stockHolder);
        stock.setSubjectState("up");
        stock.inform();
        stock.setSubjectState("down");
        stock.inform();
    }
}

 

posted @ 2023-10-26 21:50  樱花开到我身边  阅读(10)  评论(0)    收藏  举报