第23章 观察者模式
- 格式:ppt
- 大小:1.16 MB
- 文档页数:40
观察者模式的应用场景观察者模式是一种设计模式,用于实现对象之间的一对多依赖关系。
在该模式中,一个对象(subject)维护了一个观察者列表,当subject的状态发生变化时,它会自动通知所有观察者,使它们能够做出相应的响应。
观察者模式可以帮助我们实现松耦合的设计,提高代码的复用性和可维护性。
下面我们将介绍观察者模式的几个常见应用场景。
一、图形界面组件观察者模式在图形用户界面(GUI)的设计中被广泛应用。
例如,在一个窗口中,可以有多个按钮,当按钮被点击时,窗口会触发相应的事件。
这些按钮就是观察者,窗口是被观察者。
当按钮被点击时,窗口会通知所有的按钮,并且每个按钮都可以根据需要进行响应,例如执行一段特定的代码。
通过观察者模式,可以实现图形界面组件之间的解耦,使得它们可以独立地进行开发和维护。
二、消息订阅与发布观察者模式也可以用于消息订阅与发布的场景。
在这种场景下,可以有多个消息的订阅者(观察者),当有新的消息发布时,订阅者会收到通知并进行相应的处理。
这种模式可以应用于各种场景,例如新闻订阅、实时数据监控等。
通过观察者模式,发布者和订阅者之间的耦合度得到了降低,方便了系统的扩展和维护。
三、事件处理在事件驱动的程序设计中,观察者模式也经常被用于事件的处理。
事件可以是用户的操作,例如鼠标点击、键盘输入等,也可以是系统的通知,例如网络连接成功、文件加载完成等。
当事件发生时,被观察者会通知所有的观察者,并且每个观察者可以根据自身的需要做出相应的处理。
这种模式使得事件的处理变得灵活而可扩展,方便了程序的开发和维护。
四、数据监控与同步观察者模式还可以用于数据监控与同步的场景。
例如,在一个分布式系统中,可以有多个节点,每个节点都有自己的状态。
当任何一个节点的状态发生变化时,需要通知其他的节点进行同步。
这时,可以使用观察者模式,将每个节点作为观察者,当任何一个节点的状态发生变化时,它会通知其他的节点进行相应的更新操作。
观察者原理
观察者原理,又称为观察者模式或发布-订阅模式,是一种软件设计模式,用于在对象之间建立一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都能够得到通知和自动更新。
观察者原理的核心思想是将一个目标对象与多个观察者对象进行解耦,目标对象维护一个观察者列表,当目标对象的状态发生改变时,会遍历观察者列表,并调用每个观察者对象的更新方法,通知它们更新自己的状态。
在观察者模式中,目标对象和观察者对象分别扮演着不同的角色。
目标对象是被观察的对象,它负责维护观察者列表和通知观察者。
观察者对象则是接收目标对象的通知,并进行相应处理的对象。
观察者对象之间相互独立,它们可以根据自己的需求来决定是否对特定的目标对象进行观察。
观察者原理的优点是能够提高对象之间的松耦合性,使得目标对象和观察者对象可以独立地演化和重用。
同时,观察者原理也具有较好的扩展性,可以灵活地增加新的观察者对象。
然而,观察者原理也存在一些缺点。
首先,观察者模式可能会导致系统中观察者对象过多,增加了对象之间的交互复杂性。
其次,观察者模式在通知观察者时,是按照固定的顺序调用其更新方法的,这可能会导致顺序依赖的问题。
总的来说,观察者原理是一种简单而实用的设计模式,在许多
场景下都有广泛应用,如事件驱动系统、消息队列等。
通过将观察者对象与目标对象解耦,观察者原理能够提供一种可靠、灵活的通信机制,使得系统更加健壮和可扩展。
开发模式一、创建型模式1、工厂模式(FACTORY)客户类和工厂类分开。
消费者任何时候需要某种产品,只需向工厂请求即可。
消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
如:如何创建及如何向客户端提供。
追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。
麦当劳和肯德基就是生产鸡翅的Factory 。
2、建造模式(BUILDER)将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。
(这一定比美军在伊拉克用的翻译机好卖)。
3、工厂方法模式(FACTORY METHOD)核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
4、原始模型模式(PROTOTYPE)原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。
原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。
观察者模式应用场景
观察者模式是行为型设计模式的一种,它可以被用来在两个对象之间
创建一种观察者的关系,当一方的状态发生变化时,另一方会受到通知。
观察者模式能够帮助开发人员在不同的对象之间创建一种有效的
关系,开发人员可以轻松实现这一点,而不需要修改任何已有的类。
应用场景可以分为以下几种:
1、消息服务器系统:在这种场景中,消息服务器作为主题,当消息服
务器上的消息状态发生变化时,订阅者将收到通知。
例如,某个社交
网站的用户可以订阅另一个用户的更新,当另一个用户发布新消息时,订阅者将收到通知。
2、社交媒体平台:在这种场景中,一些社交媒体平台如微博或推特也
采用了观察者模式,当某位社交媒体用户发表新消息时,所有关注她/
他的账号都能收到通知。
3、邮件系统:当用户发送新邮件时,该用户的所有订阅者都能收到新
邮件的通知。
4、图形界面应用程序:在某些图形界面应用程序中,当状态发生变化时,所有已注册的控件都能收到通知。
5、游戏:游戏也可以使用观察者模式,例如,当游戏角色的位置发生
变化时,所有观察者(例如地图)都能收到通知,从而更新图形显示。
此外,观察者模式还可以用于实现团队协作,例如在团队项目中,当
项目状态发生变化时,所有团队成员都能收到通知,从而提高工作效率。
总的来看,观察者模式的应用场景非常广泛,它可以在消息服务器系统、社交媒体平台、邮件系统、图形界面应用程序以及游戏等场景中得到应用。
它可以帮助开发人员在不同的对象之间创建一种有效的关系,从而更加有效地开发出高质量的软件。