设计模式 - 行为型模式总结

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

 

封装变化

封装变化是很多行为模式的主题。当一个系统里面某些特性经常发生变化的时候,我们常常可以使用一个相应的行为模式来封装。所以,行为型模式里面很多模式都会具有两种对象:

1. 封装特征的对象;

2. 使用这些特征的对象。

如果不使用这些特征对象,那么这些特征对象很可能会被嵌入到它的Context类中,从而使得很高的耦合性,违法了高内聚低耦合的原则。比如策略模式中的策略对象往往会变成context的一部分,这不是我们想要的结果。

几个封装变化的模式:

1. 策略模式的策略封装了“变化的算法”;

2. 状态模式的状态封装了“变化的状态”;

3. 中介者模式的中介封装了一些对象间通信的协议;

 

通信应该是被封装还是被分布

中介者模式和观察者模式好像是相反的。

观察者模式引入了Observer和Subject来分布通信,相反,中介者对象又想封装其他对象间的通信(比如中介者对象可以封装Observer和Subject之间的通信)。一眼看去感觉是矛盾的啊。个人比较喜欢使用观察者模式,特殊是涉及UI界面的时候。但是中介者的一个典型应用也是UI方面的,可以将各个子控件之间的通信通过中介者封装起来。由于本人能力有限,不能深度体会这两种模式之间的区别。有待提高。

 

多种模式交叉使用

往往,我们在设计一个系统的时候,多种设计模式会被交叉使用。比如

1. 模板方法模式有很大的概率出现在其他模式的抽象类中。

2. 职责链模式中的对象的操作可以使用访问者模式来扩展。

3. 命令模式中的运行状态保存可以使用备忘录模式。

还有很多其他交叉使用的例子。

 

模式区别

行为型模式、结构型模式和创建型模式,各有各的关注点。

行为模式主要关注的是封装系统中一些特征的变化

结构模式关心如何管理各个类之间的关系和如何扩展,从而使得类库里面各个类之间有一个比较好的结构;

创建模式讲究如何比较有效率的来创建一些对象

 

有些时候,它们的类结构看上去很像,但是意图完全不同。区分设计模式,意图是很重要的一点。比如状态模式和策略模式,类结构一模一样,但是意图完全不一样。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值