观察者模式

简介: 观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。


一个前台小姐和多个员工之间耦合性强的关系,老板回来的时候多个员工都得到前台的通知。


模板方法:定义一个操作的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。


代码重复是编程中最常见、最糟糕的“坏味道”,如果我们在一个以上的地方看到相同的程序结构,那么可以肯定,设法将他们合而为一,程序会变得更好。但是完全相同的代码当然存在明显的重复,而微妙的重复会出现在表面不同但是本质相同的结构或处理步骤。模板方法模式由一个抽象类组成,这个抽象类定义了需要覆盖的可能有不同实现的模板方法,每个从这个抽象类派生的具体类将为此模板实现新方法。


命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,可以对请求排队或记录请求日志,以及支持可撤销的操作。


将调用操作的对象与知道如何实现该操作的对象解耦,在不同的时刻指定、排列和执行请求,支持取消、重做的操作,还可以记录整个操作日志。支持事务。


解释:请求是客户端要求系统执行的操作,也就是说将请求方法封装成一个命令对象,通过操作命令对象来操作请求方法。在命令模式是有若干个请求的,需要将这些请求封装成一条条命令对象,客户端只需要调用不同的命令就可以达到将请求参数化的目的。将一条条请求封装成一条条命定对象之后,客户端发起的就是一个个命令对象了,而不是原来的请求方法!


状态模式:允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。


状态模式提供了一个更好的办法来组织与特定状态相关的代码,决定状态转移到逻辑不在单块的if或switch中,而是分布在各个状态子类之间,由于所有与状态相关的代码都存在与某个状态子类中,所以通过新的子类可以很容易地增加新的状态和转换。


职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。


有多个对象可以处理一个请求,哪个对象处理该请求事先并不知道要在运行时刻自动确定,让客户在不明确指定接受者的情况下,提交一个请求,然后由所有能处理这请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。


解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。


如果一种特定类型的问题发生的频率足够高。那么就可以考虑将该问题的各个实例表述为一个简单语言中的语句,也就是说,通过构建一个解释器,该解释器解释这些句子来解决该问题。


相当于解释器模式就是定义成了某一种语言,A类中的语言通过调用解释器来转换成B类能识别的语言,和我们这个开发环境很类似,把我们写的C#、Java、C\C++通过软件编译为电脑能识别的二进制。


中介者:用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。


面向对象设计鼓励将行为分布到各个对象中,这种分布可能会导致对象间有许多连接,也就是说,有可能每一个对象都需要知道其他许多对象,对象间的大量相互连接使得一个对象似乎不太可能在没有其他对象支持下工作,这对于应对变化是不利的,任何较大的改动都很困难。将集体行为封装一个单独的中介者对象来避免这个问题,中介者负责控制和协调一组对象间的交互,中介者充当一个中介以使组中中介者对象不再相互显式引用,这个对象仅知道中介者,从而减少了相互连接的数目,最少知识原则, 也就是如何减少耦合的问题,类之间的耦合越弱,越有利于复用。


用一个中介对象去封装一系列的对象交互的过程,对象A调用对象B,对象B再调用对象C,这些用一个中介者对象可以封装起来,显得不那么繁琐。


目录
相关文章
|
4月前
|
设计模式 消息中间件 Java
观察者模式
观察者模式
31 1
|
4月前
|
C++
【C++】—— 观察者模式
【C++】—— 观察者模式
|
4月前
|
设计模式 JavaScript 开发者
详细讲解什么是观察者模式
详细讲解什么是观察者模式
|
关系型数据库 API
观察者模式解读
观察者模式解读
|
4月前
行为型 观察者模式(发布订阅)
行为型 观察者模式(发布订阅)
31 0
|
4月前
|
设计模式 Java
【观察者模式】 ——每天一点小知识
【观察者模式】 ——每天一点小知识
|
11月前
5 # 观察者模式
5 # 观察者模式
24 0
|
XML 设计模式 Java
观察者模式(下)
观察者模式(下)
51 0
|
设计模式
观察者模式(上)
观察者模式(上)
71 0
|
设计模式
我学会了,观察者模式
观察者模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
121 0
我学会了,观察者模式