结构型设计模式

简介: 本文介绍设计模式中的结构型设计模式

总览

这篇文章中,我们主要介绍一下结构型设计模式,以及讨论结构型设计模式中代理模式、装饰者模式、适配器模式和桥接模式有哪些及其差异点。

根据 Gang Of Four (GoF)[设计模式作者]介绍,设计模式可以分为三类,分别为创建型、结构型以及行为型。简单地说,结构模式处理类和对象的组合。 它们提供了使用对象组合和继承来创建某些抽象的不同方式。

代理模式

使用这种模式,我们创建了一个中介,它充当另一个资源的接口,例如文件、连接。 这种辅助访问为真实组件提供了替代品,并保护它免受底层复杂性的影响。

差异点:

代理提供与其持有引用的对象相同的接口,并且它不会以任何方式修改数据; 它与分别改变和装饰预先存在的实例的功能的适配器和装饰器模式形成对比

代理通常在编译时拥有关于真实主体的信息,而装饰器和适配器在运行时被注入,只知道实际对象的接口

装饰者模式

此模式对于增强对象的行为非常有用。

差异点:

尽管代理模式和装饰器模式具有相似的结构,但它们的意图不同; 虽然 Proxy 的主要目的是促进易用性或受控访问,但装饰者附加了额外的责任

代理模式和适配器模式都持有对原始对象的引用

装饰者模式中的所有装饰器都可以无限次递归使用,这是其他模型无法实现的

适配器模式

适配器模式用于连接两个不兼容的接口,否则无法直接连接。 适配器用新接口包装现有类,使其与所需接口兼容。

差异点:

代理提供相同的接口,而适配器提供与其客户端兼容的不同接口

在设计应用程序组件之后使用适配器模式,以便我们可以在不修改源代码的情况下使用它们。 这与在设计组件之前使用的桥接模式形成对比。

桥接模式

桥接模式用于将抽象与其实现分离,以便两者可以独立变化。

这意味着创建一个桥接接口,该接口使用 OOP 原则将职责分离到不同的抽象类中。

差异点:

桥接模式只能在设计应用程序之前实现。

允许抽象和实现独立更改,而适配器模式使不兼容的类可以一起工作

相关文章
|
7月前
|
设计模式 存储 缓存
结构型设计模式07-享元模式
结构型设计模式07-享元模式
20 0
|
7月前
|
设计模式 存储 安全
结构型设计模式05-组合模式
结构型设计模式05-组合模式
18 0
|
7月前
|
设计模式
结构型设计模式06-桥接模式
结构型设计模式06-桥接模式
22 0
|
19天前
|
设计模式 Go 网络安全
[设计模式 Go实现] 结构型~代理模式
[设计模式 Go实现] 结构型~代理模式
|
19天前
|
设计模式 Go
[设计模式 Go实现] 结构型~装饰模式
[设计模式 Go实现] 结构型~装饰模式
|
19天前
|
设计模式 Go
[设计模式 Go实现] 结构型~适配器模式
[设计模式 Go实现] 结构型~适配器模式
|
7月前
|
设计模式 数据处理
结构型设计模式04-适配器模式
结构型设计模式04-适配器模式
40 0
|
4月前
|
设计模式
结构型设计模式:装饰器模式
结构型设计模式:装饰器模式
24 0
|
4月前
|
设计模式 安全 C++
c++设计模式详解_结构型设计模式
c++设计模式详解_结构型设计模式
|
7月前
|
设计模式 缓存 Java
Java 23种设计模式介绍以及代码示例 第二篇结构型设计模式
结构型设计模式是一种在软件开发中常用的设计模式之一,它可以帮助我们更好地组织和管理代码结构,使得代码更加灵活、可扩展和易于维护。以下是使用结构型设计模式的一些主要原因: 1. 解耦和组件化:结构型设计模式可以帮助我们解耦各个组件之间的依赖关系,使得它们可以独立地进行修改、扩展和重用。这样使得系统的不同部分可以以更高的内聚性和低耦合性组合在一起,促进了系统的模块化和组件化。
35 0