zoukankan      html  css  js  c++  java
  • 观察者模式(java)

    观察者模式:股票提醒

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

    java源代码:

    (1)Client.java

    package shiyan21;
    
    public class Client {
    
    public static void main(String args[]) {
    
    MySubject subject = new Stock();
    
    MyObserver obs1;
    
    obs1=new Holders();
    
    subject.attach(obs1);
    
    System.out.println("****股票上涨****");
    
    subject.change(5);
    
    System.out.println("");
    
     
    
    System.out.println("****股票下跌****");
    
    subject.change(-5);
    
    System.out.println("");
    
     
    
    System.out.println("****股票稳定****");
    
    subject.change(4);
    
    System.out.println("");
    
    }
    
    }

    (2)Holders.java

    package shiyan21;
    
    public class Holders implements MyObserver {
    
    public void response(int rate) {
    
    if(rate>=5) {
    
    System.out.println("股票上涨,买买买");
    
    }else if(rate<=-5){
    
    System.out.println("股票下跌,大哭一场");
    
    }else {
    
    System.out.println("股票比较稳定,还好还好");
    
    }
    
    }
    
    }
    

    (3)MyObserver.java

    package shiyan21;
    
    public interface MyObserver {
    
    void response(int rate);
    
    }
    

    (4)MySubject.java

    package shiyan21;
    
    import java.util.ArrayList;
    
    public abstract class MySubject {
    
    protected ArrayList<MyObserver> observers = new ArrayList<MyObserver>();
    
    //注册方法
    
    public void attach(MyObserver observer) {
    
    observers.add(observer);
    
    }
    
    //注销方法
    
    public void detach(MyObserver observer) {
    
    observers.remove(observer);
    
    }
    
    //抽象通知方法
    
    public abstract void change(int rate);
    
    }
    

    (5)Stock.java

    package shiyan21;
    
    public class Stock extends MySubject {
    
    public void change(int rate) {
    
    for(Object obs : observers) {
    
    ((MyObserver)obs).response(rate);
    
    }   
    
        }
    
    }
    

      

    实现截图:

  • 相关阅读:
    什么是数据挖掘?
    Oracle 泵导入导出
    如何创建一个 mongo 数据库并为它添加一个认证用户?
    如何提高 windows 的使用效率?--巧用运行命令
    在 vs2017 中使用 C# 7 新特性。
    什么是按引用传递和按值传递?
    Vue、Vuex+Cookie 实现自动登陆 。
    Web.config 灵活配置
    远程终端
    js框架总结
  • 原文地址:https://www.cnblogs.com/marr/p/15598675.html
Copyright © 2011-2022 走看看