设计模式之行为型模式
设计模式可分为三种:创建型模式、结构型模式和行为型模式
- 行为型模式是什么?
关注系统中对象之间的相互交互,研究系统在运行时,对象之间的相互通信和写作,进一步明确对象的职责,总共有11种模式
- 行为模式又有:责任链模式、迭代器模式、中介者模式、命令模式、解释器模式、访问者模式、策略模式、模板方法模式、状态模式、观察者模式和备忘录模式
责任链模式
将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,不能则传递给链上的下一个对象。
开发中常见的场景:
– Java中,异常机制就是一种责任链模式。一个try可以对应多个catch,当第一个catch不匹配类型,则自动跳到第二个catch.
– Javascript语言中,事件的冒泡和捕获机制。Java语言中,事件的处理采用观察者模式。
– Servlet开发中,过滤器的链式处理
– Struts2中,拦截器的调用也是典型的责任链模式
迭代器模式
提供一种可以遍历聚合对象的方式。又称为:游标cursor模式
– 聚合对象:存储数据
– 迭代器:遍历数据
中介者模式
本质:
解耦多个同事对象之间的交互关系。每个对象都持有中介者对象的引用,只跟中介者对象打交道。我们通过中介者对象统一管理这些交互关系
命令模式
将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式通过这种封装的方式实现将客户端和接收端解耦。
命令模式的几个角色:
抽象命令接口Command:定义命令的接口,声明执行的方法。
具体的命令对象ConcreteCommand:持有具体的接受者对象,完成具体的具体的命令。
接受者对象Receiver:接受者对象,真正执行命令的对象。
传递命令对象Invoker:持有命令对象,要求命令对象执行请求。
客户端对象Client:创建具体命令的对象并且设置命令对象的接受者
解释器模式
– 是一种不常用的设计模式
– 用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。
– 当我们需要开发一种新的语言时,可以考虑使用解释器模式。
访问者模式
策略模式
– 策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法。
本质:分离算法,选择实现。