java实现观察者模式之股民的反应

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

package Lab21_Observer;

import java.util.ArrayList;

public class Invertor {
    // 观察目标 股票
    public static class Stock extends MySubject {
        public String change(String state) {
            if (state == "increase") {
                System.out.println("股票价格上涨!");
                System.out.println("----------------------------");
            }
            if (state == "decrease") {
                System.out.println("股票价下跌!");
                System.out.println("----------------------------");
            }

            for (Object obs : observers) {
                ((MyObserver) obs).response(state);
            }
            return state;

        }

    }

    // 观察者 股民
    public static class Investor implements MyObserver {
        public void response(String change) {

            if (change == "increase") {
                System.out.println("股民继续买股票!");
                System.out.println("----------------------------");
            }
            if (change == "decrease") {
                System.out.println("股民大哭一场!");
                System.out.println("----------------------------");
            }

        }
    }

    // 抽象观察者 观察者接口
    public static interface MyObserver {
        void response(String change); // 抽象响应方法
    }

    // 抽象观察目标
    public static abstract class MySubject { // 抽象类
        protected ArrayList observers = new ArrayList();

        // 注册方法 通过此方法将观察目标与观察者联系起来
        public void attach(MyObserver observer) {
            observers.add(observer);
        }

        // 注销方法 通过此方法将观察目标与观察者的联系断开
        public void detach(MyObserver observer) {
            observers.remove(observer);
        }

        public abstract String change(String state); // 抽象通知方法
    }

    public static void main(String[] args) {

        // TODO Auto-generated method stub
        MySubject subject = new Stock();

        MyObserver obs1;
        obs1 = new Investor();

        subject.attach(obs1);

        subject.change("increase");

    }

}

 

posted on 2021-11-25 16:06  风中明月  阅读(62)  评论(0编辑  收藏  举报