设计模式之行为型模式

来源:互联网 发布:gta53md针对笔记本优化 编辑:程序博客网 时间:2024/05/21 11:19

观察者模式

当一个对象更新时,通知其他对象更新自己。在通知者对象中可使用委托,把要通知的对象的方法委托给通知者,这样就可以实现该功能。


模板方法模式

将子类中不变的行为搬到超类,出去子类中重复代码来实现它的优势。


命令模式

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


状态模式

在运行时根据状态改变它的行为,把特定的状态相关的行为都存进一个对象中,通过定义新的子类可以很容易的增加新的状态和转换。将各个状态分别放在子类中,可是程序易于扩展,易于维护。


职责链模式

职责链模式和状态模式有些相似,但是他重点解决的是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象可以处理它。

例子:小菜请假,加薪


解释器模式

解释器模式也是为了减少重复,充分复用代码,因而把相同的部分抽象出来。

例子:音乐解释器。

中介者模式

所谓中介者模式,就是这个类的作用是作为一个中介,为其他类牵线搭桥,传送信息。这样使得其他类可以不用相互认识,只要他们认识中介者就可以啦!减少了类之间的耦合性。把类之间的复杂联系封装。

例子:国家之间的相互通信有安理会来传达。


访问者模式

将与对象相关的行为集中的访问者对象中,意味着增加新的行为很容易。但是前提是数据结构相对稳定。例如男人和女人这个例子,如果增加一个行为,是很容易的,只要添加一个具体访问者类就是了。但是如果人的分类不稳定,想要再加一个分类,如老人,那就很困难了,那样的话每个访问者都需要修改,还得添加老人这个类。违背开闭原则。


策略模式

与状态模式相似。将不同的算法分别封装,他们都继承策略类。运行时有客户端决定使用哪种策略。可以解决不同时间应用不同的规则,就可以使用它。一般情况策略模式与简单工厂相结合,消除分支判断。

具体类图与状态模式相似。

备忘录模式

适合于需要维护或记录属性历史的情况,可以实现命令的撤销,这一点与命令模式相似。


迭代器模式

提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。即不管聚合对象是什么都需要遍历的时候考虑使用。

 

原创粉丝点击