23种设计模式UML类图
2020-08-14 16:42:27 67 举报
23种设计模式UML类图
作者其他创作
大纲/内容
抽象工厂类(AbstractFactory)
+CreateProductA()+CreateProductB()
Client(客户端)
维护一个ConcreteState子类实例实例中定义了当前的状态
原型A类(ConcretePrototype)
+Clone
同事类不清楚其他同事的行为但同事类都了解中介者
A产品2类(ProductA2)
策略模式
组件接口(Componet)
+Operation()
子系统C类
+MethodA()+MethodB()
抽象观察者定义接口用于主题更新时通知自己更新
TerminalExpression(终结符表达式)
+Interpret(context : Context)
装饰抽象类(Decorator)
建造者接口(Builder)
+BuildPart()
Caretaker(管理者类)
-Memento : Memento
Target(目标类)
+Request()
ConcreteVisistorB(具体访问者B)
+VisitConcreteElementA(ConcreteElementA)+VisitConcreteElementB(ConcreteElementB)
客户端
装饰A类(ConcreteDecoratorA)
- addStats : String
抽象主题将所有观察者存入自身抽象主题提供接口删除或新增观察者
抽象产品A类(AbstractProduct)
Component(组件类接口)
+Add()+Remove()+Display()
ConcreteMediator(具体中介者)
具体的策略类封装了具体的算法行为继承于策略类
外观类与客户端直接交互客户端无需了解子系统具体实现即可将请求代理给子系统
声明一个克隆自身的接口
Leaf(叶节点类)
+Display()
ConcreteAggregate(聚集类)
+Iterator : Iterator
备忘录模式
Commond(命令类)
+Execute()
具体处理类能处理则处理不能处理交由继任者处理
是否初始化单例由单例类自己负责通过唯一的接口可以获得单例类实例
Aggregate(聚集抽象类)
享元模式
ConcreteStateB(状态类B)
+Handle()
示例
继承
通过在适配器中封装一个Adaptee对象从而把源接口转换为目标接口
Invoker(执行者)
具体主题将有关状态存入观察者内部在主题发生变化时通知观察者更新
被提炼出的抽象
ConcreteCommond(具体命令类)
-receiver : Receiver
ConcreteStateC(状态类C)
程序运行的上下文维护了一个对策略类的引用调用ContextInterface()会调用维护的策略类的具体算法实现
具体的装饰对象可以给组件添加职责
抽象工厂模式
代理模式
Flyweight(享元超类)
状态模式
FlyweightFactory(享元工厂)
+GetFlyweight() : Flyweight
单例模式
Element(元素抽象类)
+Accept(visitor : Visitor)
Visistor(访问者抽象类)
重写工厂方法创建具体的产品对象
Handler(处理者接口)
+SetSuccessor()+HandleRequest()
真实项目类(ConcreteSubject)
装饰B类
ConcreteColleagueA(具体同事A类)
职责链模式
原型B类(ConcretePrototype)
抽象状态类(State)
Memento(备忘录类)
+State
外观类(Facade)
Adaptee(需要被适配的类)
子系统A类
ConcreteIterator(迭代器)
+First()+Next()+IsEmpty()
子系统
产品接口(Product)
策略接口定义了公共的算法接口
工厂方法返回产品接口对象
指挥者类(Director)
+Construct()
建造者模式
Abstraction(抽象类)
UnsharedConcreteFlyweightB(非共享的享元B类)
客户端(Client)
指挥者构建一个实现了建造者接口的对象
具体状态子类每个子类实现了与context状态相关的行为Handle()
ConcreteImplementorA(实现A类)
+OperationImp()
原型模式
具体主题类(ConcreteSubject)
+subjectStatus
Implementor(实现抽象类)
ConcreteStateA(状态类A)
ConcreteHandlerB(具体处理B类)
+HandleRequest()
继承享元超类或实现Flyweight接口享元实例不一定需要共享实现Flyweight接口使共享成为可能
具体迭代器实现了聚集类元素的操作
产品接口:定义了产品公共行为同时也是工厂方法创建的对象的接口
工厂A类(ConcreteFactory)
将接受者对象绑定于一个命令调用接受者相应操作以实现Execute
中介者模式
具体建造者(ConcreteBuilder)
+BuildPart()+getResult()
Mediator(中介者)
装饰对象类
产品类(Product)
ConcreteVisistorA(具体访问者A)
负责创建备忘录备忘录可记录当前部分状态
Originator(发起者类)
+SetState()+CreateMemento()
真实工厂类(ConcreteCreator)
+FactoryMethod()
声明一个借口用于访问和管理Component的子部件
ConcreteElementA(具体元素A类)
装饰A类
模板方法模式
主题类(通知者Subject)
+Attach(Observer:observers)+Detach(Observer:observers)+Notify()
代理类(Proxy)
实现克隆接口的原型子类
Receiver(接受者)
+Action()
抽象模板类
+templateMethod()+PrimitiveOperation1()+PrimitiveOperation2()
关联
AbstractExpression(抽象解释器)
策略C类(ConcreteStrategyC)
+AlogorithmInterface()
具体观察者收到主题更新时更新自身状态
观察者模式(发布-订阅模式)
迭代器模式
工厂方法模式
装饰模式
备忘录可记录当前部分状态不对外暴露
B产品1类(ProductB1)
Context上下文
Singleton(单例类)
-instance : Singleton
-Singleton()+GetInstance()
Composite(枝节点类)
命令模式
装饰B类(ConcreteDecoratorB)
+Operation()- AddBehavior()
ConcreteFlyweightA(享元A类)
Iterator(迭代器接口)
解释器模式
真实产品类(concreteProduct)
抽象产品B类(AbstractProduct)
项目类接口(Subject)
叶子节点实现的Add与Remove为空实现目的是为了忽略组合对象与单个对象的不同叶节点没有后继节点
可以给装饰对象类添加一些具体的职责.
聚合
观察者类(ConcreteObserver)
-observerState
+Update()
定义Proxy代理所代表的实体
子系统B类
ConcreteElementB(具体元素B类)
定义了算法骨架templateMethod方法具体的实现由子类实现PrimitiveOperation方法
ObjectStructrue
策略A类(ConcreteStrategyA)
Colleague(抽象同事类)
ConcreteImplementorB(实现B类)
具体建造者实现了建造者接口的对象负责构建产品的各个部件
桥接模式
适配器模式
观察者抽象类(Observer)
组合模式
ConcreteColleagueB(具体同事B类)
实现了产品接口的具体类型
具体中介者需要了解所有同事类能从同事类接收消息能向同事类发送消息
装饰对象类(ConcreteComponent)
模板类
+PrimitiveOperation1()+PrimitiveOperation2()
策略类接口(Strategy)
ConcreteHandlerA(具体处理A类)
Adapter(适配器类)
访问者模式
原型类接口(Prototype)
+Clone()
RefinedAbstraction(提炼抽象类)
抽象迭代器定义了聚集类元素的操作
B产品2类(ProductB2)
可遍历所有元素提供一个高层接口以允许访问它的元素
工厂B类(ConcreteFactory)
实现具体的PrimitiveOperation方法
负责保存备忘录
外观模式
策略B类(ConcreteStrategyB)
抽象工厂接口(Creator)
+Factorymethod()
+ContextInterface()
A产品1类(ProductA1)
NonterminalExpression(非终结符表达式)
0 条评论
下一页