【面向对象】——设计模式之行为型模式(一)

行为型模式包括:观察者模式、模板方法模式、命令模式、状态模式、职责链模式、解释器模式、中介者模式、访问者模式、策略模式、备忘录模式、迭代器模式。

这篇,介绍的是:观察者模式、模板方法模式、命令模式、状态模式、职责链模式。

观察者模式:

定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自己更新自己。


什么时候用:当一个对象的改变需要同时改变其他对象,而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式。也可以说:一个抽象模型有两个方面,其中一方面依赖于另一方面,这时使用观察者模式可以将这两者封装在独立地对象中使他们各自独立地改变和复用。总的来说:观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。

就比如:一个团伙在进行盗窃的时候,总有一两个人在门口把风,如果有什么风吹草动,则会立即通知里面的同伙紧急撤退。也许放风的人并不一定认识里面的每一个同伙;而在里面也许有新来的小弟不认识这个放风的。但是这没什么,这个影响不了他们之间的通讯,因为他们之间有早已商定好的暗号。并且,暗号定好后,不需要知道是谁发出的,所以即使换个把风者,也不会影响同伙的作案。这个暗号其实就是那个接口。

模板方法模式:

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


什么时候用:当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。

命令模式:

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


就比如:


将命令封装成一个类,服务员根据需要发布命令,点完菜后,一次性通知。

状态模式:

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


什么时候用:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。

就比如:


电灯的开和关。在开状态下,按下开关则关灯,关灯状态下,按下开关则开灯。

职责链模式:

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


就比如:请假。比如:如果请假1天,只需和项目经理打声招呼就行了,如果请两天,就需要向人事部说明。若请假两天以上,则需向总经理提交申请。即:



运用职责链模式,我们不必考虑是谁批准的,我们只需把请假信息发给项目经理,无论谁给回复,最终有个结果就行。即:




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值