UML图解-Gof 23种设计模式
2023-03-08 17:09:20 3 举报
23种设计模式UML图
作者其他创作
大纲/内容
Creator
+ factoryMethod()
通过再内部包装一个Source对象,把源接口转换成目标接口。
ConcreteFactory1
+ createProductA()+ createProductB()
SubSystemC
+ method()
Client
继承
给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
关联
实现
访问者模式Visitor Pattern
发起人,创建一个备忘录,用于记录当前时刻它的内部状态,并可使用备忘录恢复内部状态;
ConcreteVisitor2
+ visitorConcreteElementA(in concreteElementA)+ visitorConcreteElementB(in concreteElementB)
一个享元工厂,用于创建并管理Flyweight对象,它主要是用来确保合理的共享Flyweight,当用户请求一个Flyweight时,工厂对象提供一个已创建的实例;
聚合
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。
ConcreteComponent
+ operation()
享元模式Flyweight Pattern
装饰模式Decorator Pattern
提世一个方法顺序访间一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
ConcreteComponent定义一个具体的对象,也可以给这个对象添加一些职责;个人理解:基本的、公共的行为或职责;
UML图解设计模式 Gof 23
抽象
RealSubject定义Proxy所代表的真实实体;
Strategy具体策略类,封装算法或行为;
Leaf
+ display(int depth):int
依赖
继承Flyweight超类或实现接口,并为内部状态增加存储空间;
具体访问者,实现每个由Visitor声明的操作,每个操作实现算法的一部分,而该算法片段乃是对应与结构中对象的类;
具体抽象类
Singleton
- instance:Singleton
+ getInstance()- singleton()
AbstractClass
+ templateMethod()+ operationA()+ operationB()
状态模式State Pattern
中介者模式Mediator Pattern
具体产品,实现product接口
为其他对象提供一种代理以控制对这个对象的访问
ConcreteStateB
+ handle()
定义一个处理请求的接口;
ProductA2
迭代器模式Iterator Pattern
SubSystemD
Director
+ Construct()
允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。
保存一个引用使得代理可以访问实体,并提供一个与subject的接口相同的接口,这样代理就可以用来替代实体;
维护一个ConreteState子类的实例,这个实例定义当前的状态;
被提炼的对象
font color=\"#404040\
目标可以是具体的或抽象的类,也可以是接口。
具体观察者,实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调;
Iterator
+ first():returnType+ next()+ isDone()+ currentItem()
ConcreteColleague1
ConcretePrototypeB
+ clone()
单例模式Singleton Pattern
原型类,声明一个克隆自身的接口
Caretaker
- Memento : Memento
用来声明执行操作的接口
Aggregate
+ createIetrator():Iterator
ConcreteElementA
+ accept(in visitor):Visotor+ opreationA()
表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。
Facade
- subSystemA- subSystemB- subSystemC- subSystemD
+ Facade()+ method()
TerminalExpression
+ interpret(in context):Context
Visitor
+ visitorConcreteElementA(in concreteElementA)+ visitorConcreteElementB(in concreteElementB)
抽象中介者,定义了同事对象到中介者对象的接口;
ConcreteFactory2
Originator
+ state
+ setMemento(Memento)+ createMemento()
Context
+ contextOperation()
Component定义一个对象接口,可以给这些对象动态添加职责;
具体中介者对象,实现抽象类的方法,它需要知道所有具体同事类,并从具体同事接收消息,向具体同事对象发出命令;
模板方法模式Template Method Pattern
StrategyC
ProductA1
RealSubject
+ Request()
Product是对两个抽象产品的具体分类的实现;
使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变.
ConcreteColleague2
Facade知道哪些子系统负责处理请求,将客户端的请求代理给适当的子系统对象;
适配器模式Adapter Pattern
抽象表达式,声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享;
ConcreteElementB
+ accept(in visitor):Visotor+ opreationB()
具体原型类,实现一个克隆自身的操作;
解释器模式Interpreter Pattern
定义工厂方法所创建的对象的接口
Component
ConcreteSubject
+ SubjectState
Colleague
策略模式Strategy Pattern
具体实现
ProductB1
负责保存好备忘录;
备忘录模式Memento Pattern
让一个原型克隆自身从而创建一个新的对象;
SubSystemB
将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。
ConcreteCreator
Proxy
职责链模式Chain of responsibility Pattern
创建型5种
具体同事类,每个具体同事只知道自己的行为,而不了解其他同事类的情况,但它们都认识中介者对象;
抽象状态类,定义一个接口以封装与context的一个特定状态相关的行为;
ConcreteComponent就是具体的装饰对象,起到给接口添加职责的功能;
ConcretePrototypeA
ConcreteAggregate
具体建造者,实现Builder接口,构造和装配各个部件;
ConcreteStateA
ConcreteBuilder
+ buildPartA()+ buildPartB()+ getResult()
具体状态,每一个子类实现一个与COntext的一个状态相关的行为;
Context上下文,维护对Strategy对象的引用;个人理解:管理所有算法实现的引用;
NonterminalExpression
Product
重定义工厂方法返回一个ConcreteProduct实例
ConcreteVisitor1
Source
+ specificRequest()
Builder
+ buildPartA()+ buildPartB()
允许你将对象组合成树形结构来表现”整体/部分”层次结构. 组合能让客户以一致的方式处理个别对象以及对象组合.
声明工厂方法,返回一个Product类型的对象;
指那些不需要共享的Flyweight子类,因为FlyWeight接口共享成为可能,但是并不强制共享;
使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系
Flyweight
+ opreation(in ext):int
知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者;
Subject
所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用域外部状态
指挥者,是构建一个使用Builder接口的对象;
UnshardConcreteFlyweight
在组合中表示叶节点对象,叶节点没有子节点
RefinedAbstraction
SubSystem Classes
聚集抽象类
命令模式Command Pattern
Receiver
+ action()
具体元素,实现Accpet操作;
将一个接收者对象绑定与一个动作,调用接收者相应的操作,以实现Excute方法;
抽象同事类
Strategy
用一个中介对象封装一些列的对象交互。
桥接模式Bridge Pattern
具体产品
Subject定义了RealSubject和Proxy的共用接口,这样就在任何使用realSubject的地方使用Proxy;
Observer
+ update()
AbstractProductA
适配器模式、桥接模式、组合模式、装饰器模式、外观(门面)模式、享元模式、代理模式、
AbstractProductB
SubSystemA
+ attach(Observer)+ detach(Observer)+ notify()
需要适配的类
工厂方法模式Factory Method Pattern
StrategyB
concreteHandler2
+ handleRequest(in request):int
ConcreteFlyweight
AbstractProduct是抽象产品,都有可能有多种不同的实现;
Prototype
负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录。
Composite
+ add(int c):Component+ remove(int c):Component+ display(int depth):int
AbstractExpression
抽象工厂模式Abstract Factory Pattern
AbatractFactory
+ createProductA()+ createProductB()
SubSystem Classes子系统集合类,实现具体功能,处理Facade指派的任务;注意子类中没有Facade的任何信息,即没有对Facade对象的引用;
如想让某个类的一个实例能用来提供许多”虚拟实例”,如连接池等;
建造者模式Builder Pattern
ConcreteClass
+ operationA()+ operationB()
- component(聚合)
定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。
在不破坏对象的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态
能枚举它的元素,可以提供一个高层的接口以允许访问者访问它的元素;
具体处理类,处理它负责的请求,可以访问它的后继者,如果可以处理该请求,就处理,反之就将该请求转发给它的后继者;
行为型11种
ConcreteImplmentorA
+ operationImpl()
Decorator装饰抽象类,继承Component,从外类来扩展Component类的功能,对于Component来说,是无需知道Decorator的存在的;
ConcreteComponentA
+ operation()- privateMethodA(): return String
ObjectStructure
ConcreteObserver
- observerState
ConcreteFactory是具体的工厂,创建具有特定实现的对象;
State
Product2
定义一个Accpet操作,它以一个访问者为参数;
Memento
ConcreteIterator
组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为,声明一个接口用于访问和管理Component的子部件;
Invoker
抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己;
定义一个getInstance操作,允许客户访问它的唯一实例,getInstance是一个静态方法,主要负责创建自身的唯一实例;
Implementor
终结符表达式,实现与文法中的终结符相关联的解释操作;
抽象工厂接口,包含产品创建的抽象方法;
组合模式Composite Pattern
非终结符表达式,为文法中的非终结符实现解释操作。对文法中每一条规则R1、R2......Rn都需要一个具体的费终结符表达式;
定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关的操作,如add何remove;
原型模式Prototype Pattern
观察者模式、模板方法模式、命令模式、状态模式、职责链模式、解释器模式、中介者模式、访问者模式、策略模式、备忘录模式、迭代器模式、
Target
+ request()
concreteHandler1
FlyweightFactory
+ getFlyweight(in key):Flyweight
要求该命令执行这个请求;
具体主题,将有关状态存入具体观察者对象,在具体主题的内部状态改变时,给所有登记过的观察者发出通知;
Abstraction
包含解释器之外的一些全局信息;
迭代抽象类,用于定义得到开始兑现,得到下一个对象,判断是否到结尾,当前对象等抽象方法,统一接口;
Command
+ excute()
ConcreteMediator
实现一个模板方法,定义了算法骨架,具体子类将重新定义operation以实现一个算法的步骤;
结构型7种
为该对象结构中ConcreteElement的每一个类声明一个Visit操作;
Element
+ accept(in visitor):Visotor
门面模式Facade Pattern
抽象工厂模式、建造者模式、工厂方法模式、原型模式、单例模式、
ConcreteStateC
实现operation以完成算法中与特定子类先关的步骤;
ConcreteCommand
- receiver : Receiver
具体迭代器,继承Iterator,具体实现;
Handler
+ setNext(in next):Handler+ handleRequest(in request):int
ConcreteImplmentorB
定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。
ConcreteComponentB
+ operation()- privateMethodB()
client
代理模式Proxy Pattern
把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象;
Decorator
StrategyA
Builder是为创建一个Product对象的各个部件指定的抽象接口;
Mediator
观察者模式
Adapter
ConcreteProduct
0 条评论
下一页