Java设计模式-观察者模式

应用场景:监控被观察者。如:上学的时候,暗恋个女孩,又没有啥渠道第一时间获取这个女孩的动态,这时候闺蜜成了关键,完全可以通过她的闺蜜(观察者)去了解她的动态,比如今晚她和闺蜜一起逛街,通过闺蜜知道她买了啥或者做了其他啥动作

被观察者:暗恋对象

import java.util.Observable;

public class AnLianDuiXiang extends Observable {

	 public void doSomething(){
		  System.out.println("走进优衣库的门店!");
		  super.setChanged();
		  super.notifyObservers("在优衣库买衣服,和一个男的进试衣间了");
	
	 }
}

观察者:暗恋对象的闺蜜

import java.util.Observable;
import java.util.Observer;

public class GuiMi implements Observer {

	@Override
	public void update(Observable o, Object arg) {
		tellYou(arg.toString());
	}
	
	public void tellYou(String msg) {
		System.out.println("闺蜜告诉你她的动态:" + msg);
	}

}

调用者:你

public class Client {

	public static void main(String[] args) {
		AnLianDuiXiang she = new AnLianDuiXiang();
		she.addObserver(new GuiMi());
            she.doSomething();
    }
}

运行结果(你的心从吐鲁番一下子到了太平洋最深处):

走进优衣库的门店!
她的动态:在优衣库买衣服,和一个男的进试衣间了

当然,也许当晚和她一起的不止一个闺蜜(观察者)也不一定,所以所有的当晚在场的闺蜜,都知道她去了试衣间了。。。

Observable(可观察对象)和 Observer(观察者)是Java的util包下自带的,被观察者继承Observable,即可通过setChanged方法触发事件,通过notifyObservers向所有观察者发送消息,观察者实现Observer接口,重载update方法获取消息,你(Client)只需要指定需要监控谁就行了。

观察者模式在现实应用中使用很广泛,除了监听暗恋对象外,在银行的ATM取款输入密码错误次数过多时,会执行吞卡动作,此时摄像头进行连续快拍和通知监控系统开始吞卡都是通过观察者模式实现的,Java中的消息队列其实就是观察者模式的升级,有兴趣的可以瞅瞅。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值