设计模式学习总结——观察者模式「建议收藏」

设计模式学习总结——观察者模式

大家好,又见面了,我是全栈君。

观察者模式将观察者(订阅)和被观察者(公布)分离,实现了代码的松耦合;且定义了一对多的依赖关系,让多个观察者同事监听一个被观察者,同一时候一个被观察者能通知多个观察者更新。

角色:

抽象主题(Subject):又叫抽象被观察者(Observable)。定义一个接口能够添加和删除观察者对象。

抽象观察者(Observer):为全部的详细观察者定义一个借口,做更新操作。

详细主题(Concrete Subject):实现抽象主题接口,将全部的观察者对象的引用保存到一个列表中。

当状态发生改变时,通知列表中的观察者。又称详细被观察者。

详细观察者(Concrete Observer):实现抽象观察者接口,每一个详细观察者更具详细情况实现。

Android开发中。ContentObserver,setOnClickListener。以及自己定义的接口(在Activity中Implements, 传入到异步任务,当任务完毕后,调用接口函数刷新Activity页面)等都是观察者非常好的样例。

而Java本身提供了对观察者模式的支持,java.util库中提供了例如以下两个类:

Observer接口,作为抽象观察者。仅仅定义了一个接口方法update(),每一个详细观察者单独实现。
Observable类,能够作为抽象被观察者或者详细被观察者。由于这个类而非接口,内部实现已经能满足详细被观察者的要求。当然也能继承并扩展此类。Observable类提供了两个重要方法:setChanged(),用于设置内部标志位,标示被观察者发生变化。notifyObservers(),用于调用列表中全部观察者的update()方法。观察者做更新操作。

參考资料:http://www.blogjava.net/supercrsky/articles/202544.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116115.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java设计模式之创建型:单例模式

    Java设计模式之创建型:单例模式

    2021年10月4日
    43
  • 螃蟹学PHP设计模式之中介者模式

    螃蟹学PHP设计模式之中介者模式

    2021年8月30日
    57
  • ❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!❤️

    ❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!金九银十已经来了,挺近大厂最好的机会已经来了!如果你是要找工作的,一定要抓住这个机会!前面已经整理了很多的面试资料:1,❤️爆肝!整理了一周的Spring面试大全【含答案】,吊打Java面试官【建议收藏】!❤️2,❤️肝完了,一天掌握数据结构和算法面试题,吊打面试官,建议收藏❤️3,❤️集合很简单?开什么玩笑?肝了一周,全是精华,万字讲解!面试再不怕集合问题了!!!❤️4,肝完了,总结了SpringBoot与缓存的知识点,快速掌

    2022年6月10日
    23
  • PHP设计模式-工厂模式[通俗易懂]

    PHP设计模式-工厂模式[通俗易懂]PHP设计模式-工厂模式一、工厂模式概念工厂模式,顾名思义,像工厂的流水线,固定的规格,固定的材料,做固定的事情。工厂模式分为三种:简单工厂、工厂方法、抽象工厂,三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化。而工厂方法和简单工厂相对,大家初看起来好像工厂方法增加了许多代码但是实现的功能和简单工厂一样。但本质是,简单工厂并未严格遵循设计模式的开闭原则,当需要增加新产品时也需要修改工厂代码。但是工厂方法则严格遵守开闭原则,模式只负责抽象工厂接口,具体工厂交给客.

    2022年7月25日
    9
  • 设计模式之6大原则(6)开闭原则

    设计模式之6大原则(6)开闭原则

    2021年11月15日
    61
  • C++ 23种设计模式(6)-适配器模式

    C++ 23种设计模式(6)-适配器模式适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它包括类适配器和对象适配器,本文针对的是对象适配器。举个例子,在STL中就用到了适配器模式。STL实现了一种数据结构,称为双端队列(deque),支持前后两段的插入与删除。STL实现栈和队列时,没有从头开始定义它们,而是直接使用双端队列实现的。这里双端队列就扮演了适配器的角色。队列用到了它的后端插入,前端删除。而栈用到了它的后端插入,后端删除。假设栈和队列都是一种顺序容器,有两种操作:压入和弹出。

    2022年7月25日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号