设计模式--行为型设计模式(behavioral)
1 模板方法(Template Method)
简单来说就是 一个方法有多个步骤去执行,包括 不变的方法和可变的方法,可变的方法就放到子类里面执行。例子 将某个东西塞冰箱里需要几步(1 2 3 4 )
2 策略模式(Strategy)
简单来说就是 面向对象中的多态就可以认为是一种策略模式的使用, 对于同一个接口使用不同的实现类, 有不同的行为。
实例 :小伙伴出去玩耍, 需要选择一种出行方式(同一个接口), 有自驾出行和公交出行两种策略
3 观察者模式(Observer)
简单来说就是 当数据或其他有变化的时候,就通知相关方去对应处理。对象之间的一对多依赖, 让多个观察者对象同时监听某一个主题对象, 当主题对象发生变化时, 它的所有依赖者(观察者)都会收到通知并更新
4 备忘录模式(Memento)
简单来说就是 保存对象的某个状态,便在适当的时候恢复对象
5 命令模式(Command)
简单来说就是 请求的调用者和接受者不直接交互,降低耦合 (人和灯没有交互,通过Command去建立关系)
- Command接口 : 对应模式中Command接口 --执行操作的接口
- LighetOnCommand, LightOffCommand : 对应模式中ConcreteCommand角色--接收者对象绑定于一个动作,调用接收者相应的操作,以实现Excute
- Person : 对应模式中Invoker角色--要求该命令执行这个请求
- Light : 对应模式中Receiver角色--知道如何实施与执行一个请求相关的操作
- Client : 对应模式中Client角色, 测试代码
6 中介者模式(Mediator)
简单来说就是 通过一个中介将很多对象之间的交互关系由直接变为间接,将“网状结构”的交互关系变为“星形结构”的交互关系。比如生活中为了方便交流往往我们都会使用各种群,一个群成员发送了消息所有属于这个群的成员都会收到通知,这样的一个“群”就属于中介者。
群聊场景, 每个用户将消息发送到群中, 在群中展示, 不具体发送到个人, 类与中介者模式对应关系如下:
- Mediator接口 : 对应中介者模式中的Mediator(中介者)角色
- GroupMediator : 对应中介者模式中的ConcreteMediator(具体中介者)角色
- User : 对应中介者模式中的Colleague class(同事类)角色
7 责任链模式(Chain of Responsibility)
简单来说就是 责任链模式其实就是一个灵活版的if…else…语句,它就是将这些判定条件的语句放到了各个处理类中
-
以注册时校验用户名密码为例, 类与设计模式中个角色对应关系如下:
- Handler接口 : 对应Handler角色
- NameCheckHandler, PwdCheckHandler : 对应ConcreteHandler角色
- Client : 对应Client角色
8 访问者模式(Visitor)
-
一个商场(SuperMarket),通常都会包括(当然还会包含一些其他的组成部分):商店(Store)、监控室(MonitoringRoom)、卫生间(WaterCloset)。商场的访问者大致可以分为两大类:顾客(Customer)、商场工作人员(MarketStaff)。顾客可以逛商店、上卫生间,但却不能进入监控室;工作人员可以进入监控室、上卫生间,但却不能像顾客一样逛商店(除非他不想干了),也就是说对于商场的同一个地点,不同的访问者有不同的行为权限,而且访问者的种类很有可能需要根据时间的推移发生变化(没准哪天,工商局的人要来视察呢!此时就需要增加工商局人员的访问者了。)
9 状态模式(State)
简单来说就是 允许一个对象在其内部状态改变时, 改变它的行为。适用于一个对象存在多个状态(不同状态下行为不同), 且状态可相互转换