结构型设计模式分为7类,分别是适配器模式、桥接模式、享元模式、组合模式、外观模式、装饰模式和代理模式。
1. 适配器模式
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式分为类适配器模式和对象适配器模式。
- 类适配器模式uml类图

类适配器是通过实现Target接口以及继承Adaptee类来实现接口转换。例如目标接口需要的是operation2,但是Adaptee对象只有一个operation3,因此就出现了不兼容的情况。此时通过Adapter实现一个operation2函数,将Adaptee的operation3转换为Target需要的operation2,以此实现兼容。 - 对象适配器模式uml类图

与类适配器一样,对象的适配器模式把被适配的类的API转换成为目标类的API,与类适配器模式不同的是,对象适配器模式不是使用继承关系连接到Adaptee,而是使用代理关系连接到Adaptee类。这种实现方式直接将要被适配的对象传递到Adapter,使用组合的形式实现接口兼容的效果。
2. 桥接模式Bridge
桥接模式是将抽象部分与实现部分分离,使它们都可以独立地进行变化。这里“桥梁”的作用是连接“抽象部分”与“实现部分”,但是事实上,任何多维度变化类或者说多个树状类之间的耦合都可以使用桥接模式来实现解耦。
- UML类图

Abstraction:抽象部分。该类保持一个对实现部分对象的引用,抽象部分中的方法需要调用实现部分的对象来实现,该类一般为抽象类。
RefinedAbstraction:抽象部分的具体实现。
Implementor:实现部分。可以作为接口或抽象类。
ConcreteImplementorA和ConcreteImplementorB,实现部分的具体实现。
3. 代理模式
为其他对象提供一种代理以控制对这个对象的访问。为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。
- UML类图

角色介绍:
Subject:抽象主题类
该类的主要职责是声明真实主题与代理的共同接口方法,该类既可以是一个抽象类也可以是一个接口。
RealSubject:真实主题类
该类也称为被委托类或被代理类,该类定义了代理所表示的真实对象,由其执行具体的业务逻辑方法,
ProxySubject:代理主题类
该类也称为委托类或代理类,该类持有一个对真实主题类的引用,在其所实现的接口方法中调用真实主题类中相应的接口方法执行,以此起到代理的作用。 - 代理模式分为静态代理和动态代理。
4. 外观模式
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。
- UMl类图

角色介绍
Facade:系统对外的统一接口。
SystemA、SystemB、SystemC:子系统接口
5.装饰模式
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。
UML类图

角色介绍
Component:抽象组件。可以是一个接口或抽象类,其充当的就是被装饰的原始对象。
ConcreteComponent:组件具体实现类。该类是Component类的基本实现,也是我们装饰的具体对象。
Decorator:抽象装饰者。其内部一定要有一个指向组件对象的引用。
ConcreteDecoratorA,ConcreteDecoratorB:装饰者具体实现类,只是对抽象装饰者做出具体的实现。
6.组合模式
组合模式(Composite Pattern)也称为部分整体模式(Part-Whole-Pattern)。将对象组合成树形结构以表示“部分-整体”的层次接口,使得用户对单个对象和组合对象的使用具有一致性。
UML类图

角色介绍
Component:抽象根节点,为组合中的对象声明接口。
Composite:定义有子节点的那些枝干节点的行为,存储子节点,在Component接口中实现与子节点有关的操作。
Leaf:在组合中表示叶子节点对象,叶子节点没有子节点。

被折叠的 条评论
为什么被折叠?



