观察者模式


/**
 * 油箱油量小于等于定义的报警油量则报警
 */
public class ObserveDemo {
  static class Car extends Observable {
    private Integer oil = new Integer(0);


    public void addOil(Integer oil) {
      this.oil += oil;
    }

    public void run() throws InterruptedException {
      System.out.println("汽车启动");
      while (this.oil > 0) {
        oil--;
        Thread.sleep(1000);
        if (oil <= 5) {
          setChanged();
          notifyObservers(oil);
        }
      }
      if(this.oil == 0){
        stop();
      }
    }

    public void stop() {
      System.out.println(toString() + "停止");
    }

    public String toString() {
      return "你的汽车";
    }
  }

  static class OilBoxObserver implements Observer {

    @Override
    public void update(Observable o, Object arg) {
      System.out.println(o.toString() + "该加油啦,油还剩" + (Integer) arg);
    }
  }

  public static void main(String[] args) throws InterruptedException {
    Car accord = new Car();
    accord.addObserver(new OilBoxObserver());
    accord.addOil(6);
    accord.run();
  }
}
汽车启动
你的汽车该加油啦,油还剩5 你的汽车该加油啦,油还剩4 你的汽车该加油啦,油还剩3 你的汽车该加油啦,油还剩2 你的汽车该加油啦,油还剩1 你的汽车该加油啦,油还剩0 你的汽车停止

 

posted on 2018-02-26 17:00  花溪的小石头  阅读(123)  评论(0)    收藏  举报