观察者模式

 
  
/**
 * 油箱油量小于等于定义的报警油量则报警
 */
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 你的汽车停止

 

转载于:https://www.cnblogs.com/sstone/p/8474151.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值