行为型设计模式
2021-09-01 13:16:38 1 举报
行为型设计模式
作者其他创作
大纲/内容
非终结符表达式,为文法中的非终结符实现解释操作。对文法中的每一条规则R1、R26……Rn都需要一个具体的非终结符表达式类
将一个接收者对象绑定于一个动作,调用接收者响应的操作,以实现Execute
《interface》Command
+Excute()
ConcreteCommand2
AbstractExpression
+Interpret(in context: Context)
Caretaker
-Memento:Memento
Aggregate
+CreateIterator():Iterator
Client
策略类,定义所有支持算法的公共接口
负责存储Originator对象的内部状态,并可防止Originator以外的其它对象访问备忘录Memento
ConcreteElementA
+Accept(in vistor:Visitor)+OperatorA()
Receiver
+Action()
Observer类,抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己
终结符表达式,实现与文法中的终结符相关联的解释操作
具体聚集类
Vistor
+VisitConcreteElementA(in:ConcreteElementA)+VisitConcreteElementB(in:ConcreteElementB)
Observer
+Update()
Invoker
ConcreteStateA
+Handle()
职责链模式
负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态
Context
+ContextInterface()
迭代器模式
用来声明执行操作的接口
ConcreteClass
+PrimitiveOperation1()+PrimitiveOperation2()
具体迭代器类,继承Iterator,实现开始、下一个、是否结尾、当亲对象等方法
ConcreteSubject类,具体主题,将有关状态存入具体观察者对象。在具体主题的内部状态改变时,给所有登记过的观察者发出通知
模板方法
ConcreteVistor2
实现了一个模板方法,定义了算法的骨架,具体子类将重定义PrimitiveOperation以实现一个算法的步骤
Subject
+Attach(in: Observer)+Detach(in: Observer)+Notify()
ConcreteStateC
-state
负责保存好备忘录Memento
备忘录模式
AbstractClass
+TemplateMethod()+PrimitiveOperation1()+PrimitiveOperation2()
聚集抽象类
访问者模式
实现PrimitiveOperation以完成算法中与特定子类相关的步骤
抽象表达式,声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享
ConcreteSubject
+SubjectState
命令模式2
ObjectStructure
ConcreteElementB
+Accept(in vistor:Visitor)+OperatorB()
-observer
抽象同事类
State
ConcreteColleague1
要求该命令执行这个请求
Stragegy
+AlgorithmInterface()
ConcreteStragegyA
Colleague
中介者模式
Handler
+SetSuccessor(in successor: Handler)+HandleRequest(in request:int)
抽象中介者,定义了同时对象到中介者对象的接口
具体处理者类,处理它锁负责的请求,可访问它的后继者,如果可处理该请求,就处理之,否则就将该请求转发给它的后继者
迭代抽象类,用于定义得到开始对象,得到下一个对象,判断是否到结尾、当前对象等抽象方法,统一接口
具体同事类,每个具体同事只知道自己的行为,而不了解其他同事类的情况,但他们却都认识中介者对象
具体策略类,封装了具体的算法或行为,继承于Strategy
ConcreteObserver
-observerState
策略模式
NonterminaExpression
抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为
能枚举它的元素,可以提供一个高层的接口以允许访问者访问它的元素
ConcreteVistor1
具体元素,实现Accept操作
解释器模式
具体状态,每一个子类实现一个与Context的一个状态相关的行为
ConcreteObserver类,具体观察者,实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调
类
+ attribute1:type = defaultValue+ attribute2:type- attribute3:type
+ operation1(params):returnType- operation2(params)- operation3()
定义一个处理请求的接口
为该对象结构中ConcreteElement的每一个类声明一个Visit操作
ConcreteCommand
-receiver:Receiver
具体中介者对象,实现抽象类的方法,它需要知道所有具体同时类,并从具体同事接收消息,向具体同事对象发出命令
-Strategy
Context上下文,用一个ConcreteStraegy来配置,维护一个对Strategy对象的引用
ConcreteAggregate
Element
+Accept(in vistor:Visitor)
Originator
+State
+SetMemento(in m:Memento)+CreateMemento()
ConcreteHandler2
+HandleRequest(in request:int)
ConcreteIterator
ConcreteHandler1
观察者模式
Memento
TerminalExpression
Subject类,它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象。
具体访问者,实现每个由Visitor声明的操作。每个操作实现算法的一部分,而该算法片断乃是对应于结构中对象的类
维护一个ConcreteState子类的实例,这个实例定义当前的状态
Mediator
状态模式
-subject
ConcreteCommand1
包含解释器之外的一些全局信息
知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者
ConcreteStateB
命令模式1
ConcreteStragegyB
ConcreteMediator
ConcreteStragegyC
ConcreteColleague2
定义一个Accept操作,它以一个访问者为参数
-receiver
Iterator
+First()+Next()+IsDone()+CurrentItem()
Excute自己实现命令逻辑
0 条评论
下一页