观察者模式

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

uml类图:

 

代码:

 

package org.Observer;

public interface MyObserver {
    public void up();
    public void down();
}

 

package org.Observer;

public class Investor implements MyObserver{
    private String name;
    public Investor(String name){
        this.name=name;
    }
    @Override
    public void up() {
        System.out.println("股民"+name+"买股票");
    }

    @Override
    public void down() {
        System.out.println("股民"+name+"大哭一场");
    }
}

 

 

package org.Observer;

import java.util.ArrayList;

public abstract class Subject {
    protected ArrayList observers=new ArrayList();

    public void attach(MyObserver observer){
        observers.add(observer);
    }

    public void detach(MyObserver observer){
        observers.remove(observer);
    }
    public abstract void stockUp();
    public abstract void stockDown();

}

 

 

package org.Observer;

public class Stock extends Subject{

    @Override
    public void stockUp() {
        System.out.println("股票上涨5%");
        for(Object observer:observers){
            MyObserver ob = (MyObserver) observer;
            ob.up();

        }
    }

    @Override
    public void stockDown() {
        System.out.println("股票下降5%");
        for(Object observer:observers){
            MyObserver ob = (MyObserver) observer;
            ob.down();

        }

    }
}

 

posted on 2022-11-03 16:41  付治齐吖  阅读(49)  评论(0)    收藏  举报