观察者模式

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

 

 

 

复制代码
复制代码
public class GuMin implements Observer{
 
    private String name;
    public GuMin(String n) {
        // TODO Auto-generated constructor stub
        name=n;
    }

    @Override
    public void moneyUp() {
        // TODO Auto-generated method stub
          System.out.println(name+"买了一些股票(股票升了)");
    }

    @Override
    public void moneyDown() {
        // TODO Auto-generated method stub
        System.out.println(name+"股票降价了,哭了");
    }

}

public class GuPiao extends Subject{

    public GuPiao() {
        // TODO Auto-generated constructor stub
    }

    /*
     * public void add(Observer o) { super.add(o); }
     */
    public void up(double a) {
        // TODO Auto-generated method stub
        if(a>0.05)
        for(Observer gum : olist){
                gum.moneyUp();;
        }
    }

    public void down(double a) {
        // TODO Auto-generated method stub
        if(a>0.05)
            for(Observer gum:olist){
                    gum.moneyDown();;
            }
    }

}

public interface Observer {

    public void moneyUp();
    public void moneyDown();
}
import java.util.ArrayList;

public abstract class Subject {
    protected ArrayList<Observer> olist=new ArrayList<>();
    public Subject() {
        // TODO Auto-generated constructor stub
    }
    public void add(Observer o) {
        olist.add(o);
    }
    public void remove(Observer o) {
        olist.remove(o);
    }
    public abstract void up(double a);
    public abstract void down(double a);

}

public class Client {

    public static void main(String[]args) {
        // TODO Auto-generated constructor stub
            Subject f=new GuPiao();
            GuMin g1=new GuMin("甲股民");
            GuMin g2=new GuMin("乙股民");
            f.add(g1);
            f.add(g2);
            System.out.println("股票升了");
            f.up(0.1);
            System.out.println("比率小于0.05");
            System.out.println();
            f.down(0.001);
            
            System.out.println("股票降了");
            f.down(0.1);
            System.out.println("比率小于0.05");
            f.down(0.001);
    }

}
复制代码
复制代码

 

posted @   小旺财  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示