行为模式

GoF设计模式中,行为模式有:

1. 责任链模式 Chain of Responsibility Pattern
意图:减少发送着和接收者之间的耦合,将请求在接收者链上传递,直到该请求被处理。
应用场景:
1) 将请求发送给多个对象中的一个,但不显式指定接收者
2) 多个对象可以处理请求,但预先不知道哪个对象处理哪个请求
3) 处理请求的对象应该被动态设定
优缺点:无法保证请求一定被正确处理

2. 命令模式 Command Pattern
意图:将请求封装为对象,以便进行请求的参数化、重做、撤销等操作
应用场景:
1) 业务请求保存在队列中,以备执行
2) 支持业务请求的redo/undo
3) 实现业务行为的参数化
优缺点:有可能造成类爆炸
3. 解释器模式 Interpreter Pattern
意图:定义某个语言的语法,用于解释语言中的句子
应用场景:(验证码……)
1) 当某个语言语法较为简单时
2) 解释语言的效率没有严格要求时
优缺点:复杂语法实现困难
4. 迭代器模式 Iterator Pattern
意图:在不暴露聚合体对象内部表示的情况下,提供遍历其组成元素的接口
应用场景:
1) 不暴露聚合体内部表示,访问该对象的内容
2) 为聚合体对象提供多种遍历方式
3) 为不同的聚合结构提供统一的访问接口
优缺点:访问聚合对象的私有数据时,可能破坏聚合体的封装特性。
5. 仲裁者模式 Mediator Pattern
意图:定义一个对象,用来封装一组对象之间交互关系的实现,以降低交互对象显示引用耦合
应用场景:
1) 一组对象以有规律的方式交互,但交互方式复杂
2) 因某个对象引用并且和多个对象交互难以复用
3) 分布在不同类中的某个行为不使用多个子类进行定制
优缺点:仲裁者队对象实现复杂,且维护困难
6. 备忘录模式 Memento Pattern
意图:在不破坏对象封装的情况下,进行对象内部状态的捕捉和外部存储,以便之后用于该对象的状态恢复
应用场景:不破坏对象的封装,捕捉对象的内部状态,当需要时,可用于之后该对象的状态恢复
优缺点:有时,备忘录的对象可能是非常昂贵的。
7. 观察者模式 Observer Pattern
意图:定义对象之间一对多的依赖关系,当被依赖对象的状态改变时,所有依赖对象能自动收到更新并改变自己
应用场景:(信息订阅功能……)
1) 当一个对象改变时,需要改变其他对象,但不了解其他对象的数量
2) 当一个对象应当负责通知其他对象的职责实现时,降低通知对象和被通知对象之间的耦合
优缺点:被观察对象状态的更新可能会引起观察者级联更新
8. 状态模式 State Pattern
意图:允许一个对象当内部状态改变时,改变它的行为
应用场景:
1) 一个对象的行为取决于它的状态
2) 因对象状态,该对象的操作含大量的条件分支语句,状态可以由枚举常量代替实现
优缺点:可能需要每个状态子类决定其后继
9. 策略模式 Strategy Pattern
意图:定义一组算法,单独封装,使得算法能够对使用它的上下文自由变化
应用场景:(数据的显示方式,升序降序等)
1) 一组类只在行为上不同
2) 一个算法需要实现不同的变体
3) 向使用算法的上下文屏蔽算法具体数据结构
优缺点:
1) 客户端对象必须选择具体策略
2) 有可能破坏上下文对象的封装特性
10.模版方法模式 Template Method Pattern
意图:在一个操作中定义算法的框架,将算法中的某些步骤延迟到子类实现
应用场景:
1) 将算法不变的部分一次实现,可变部分由子类实现
2) 控制子类扩展,实现hook方法
优缺点:增加了类的数量
11.访问者模式 Visitor Pattern
意图:在不改变聚合对象元素类的情况下,可以定义施加在聚合对象元素上的新行为
应用场景:
1) 某聚合对象包含不同接口的元素类型,需要根据不同元素类型,对元素施加不同操作
2) 聚合对象结构极少变化,但常需要定义施加在聚合元素上的行为
优缺点:
聚合对象的元素类型不能变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值