`

结构型模式

 
阅读更多

Adapter适配器使得一个接口与其他接口兼容,从而给出了多个不同接口的统一抽象。

Composite模式描述了如何构造一个类层次结构,这一结构由两种类型的对象(基元对象和组合对象)所对应的类构成。其中的组合对象使得你可以组合基元对象以及其他的组合对象,从而形成任意复杂的结构。

Proxy模式中,proxy对象作为其他对象的一个方便的替代或占位符。

Flyweight模式为了共享对象定义了一个结构。

Facade模式描述了如何用单个对象表示整个子系统。模式中的facade用来表示一组对象,facade的职责是将消息转发给它所表示的对象。

Bridge模式将对象的抽象和其实现分离,从而可以独立地改变它们。

Decorator模式描述了如何动态地为对象添加职责。Decorator模式是一种结构性模式。这一模式采用递归方式组合对象,从而允许你添加任意多的对象职责。

 

Adapter模式和Bridge模式具有一些共同的特征。它们都给另一对象提供了一定程度上的间接性,因而有利于系统的灵活性。它们都涉及到从自身以外的一个接口向这个对象转发请求。

Adapter模式主要是为了解决两个已有接口之间不匹配的问题。它不考虑这些接口是怎样实现的,也不考虑它们各自可能会如何演化。这种方式不需要对两个独立设计的类中的任一个进行重新设计,就能够使它们协同工作。

Bridge模式则对抽象接口与它的(可能是多个)实现部分进行桥接。虽然这一模式允许你修改实现它的类,它仍然为用户提供该类一个稳定的接口。Bridge模式也会在系统演化时适应新的实现。

由于这些不同点,Adapter和Bridge模式通常被用于软件生命周期的不同阶段。当你发现两个不兼容的类必须同时工作时,就有必要使用Adapter模式,其目的一般是为了避免代码重复。此处耦合不可预见。相反,Bridge模式的使用者必须事先知道:一个抽象将有多个实现部分,并且抽象和实现两者是独立演化的。Adapter模式在类已经设计好后实施;而Bridge模式在设计类之前实施。这并不意味着Adapter模式不如Bridge模式,只是因为他们针对了不同的问题。

你可能认为Facade是另外一组对象的适配器。但这种解释护士了一个事实:即Facade定义一个新的接口,而Adapter则复用一个原有的接口。

适配器使两个已有的接口协同工作,而不是定义一个全新的接口。

 

Composite模式和Decorator模式具有类似的结构图,这说明他们都基于递归组合来组织可变数目的对象。相似点仅止于递归组合,同样,这是因为这两个模式的目的不同。

Decorator模式旨在使你能够不需要生成子类即可给对象添加职责。这就避免了静态实现所有功能组合,从而导致子类急剧增加。Composite则有不同的目的,它旨在构造类,使多个相关的对象能够以统一的方式处理,而多重对象可以被当做一个对象来处理。它重点不在于修饰,而在于表示。

尽管它们的目的截然不同,但却具有互补性。因此Composite和Decorator模式通常协同使用。在使用这两种模式进行设计时,我们需要定义新的类,仅需将一些对象插接在一起即可构建应用。

 

另一种与Decorator模式结构相似的模式是Proxy。这两种模式都描述了怎样为对象提哦功能一定程度上的间接引用,Proxy和Decorator对象的实现部分都保留了指向另一个对象的指针,它们向这个对象发送请求。

像Decorator模式一样,Proxy模式构成一个对象并为用户提供一致的接口。但与Decorator模式不同的是,Proxy模式不能动态地添加或分离性质,它也不是为递归组合而设计的。它的目的是,当直接访问一个实体不方便或不符合需要时,为这个实体提供一个替代者。

在Proxy模式中,实体定义了关键功能,而Proxy提供(或拒绝)对它的访问。在Decorator模式中,组件仅提供了部分功能,而一个或多个Decorator负责完成其他功能。Decorator模式适用于编译时不能(至少不方便)确定对象的全部功能的情况。这种开放性使递归组合成为Decorator模式中一个必不可少的部分。而在Proxy模式中则不是这样,因为Proxy模式强调一种关系(Proxy与它的实体之间的关系),这种关系可以静态的表达。

分享到:
评论

相关推荐

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式)

    标题中的“C#面向对象设计模式纵横谈(9):Composite组合模式(结构型模式)”明确了文章的主题聚焦于C#语言环境下的设计模式探讨,具体到第9篇讨论的是“Composite组合模式”。这一模式属于结构型模式的一种,旨在解决...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...

    结构型模式的几个模式

    根据它们的功能,这些模式通常被分为三类:创建型模式、结构型模式和行为型模式。本篇文章将重点讨论结构型模式中的几种关键类型:外观模式、代理模式、适配器模式以及桥接模式。 #### 二、结构型模式简介 结构型...

    设计模式之结构型模式

    在众多设计模式中,结构型模式关注如何组织类和对象,以形成更复杂的结构,同时保持良好的设计和代码可维护性。以下是关于“设计模式之结构型模式”的详细解析。 1. **适配器模式**: 适配器模式是一种结构型设计...

    Java设计模式之结构型模式源码以及文档

    今天我们要探讨的是“Java设计模式之结构型模式”。结构型模式主要关注如何组织类和对象,以达到良好的架构,提升代码的可读性和可维护性。在这个主题中,我们将深入理解并讨论这些模式的原理、应用场景及其实现。 ...

    设计模式之结构型模式uml类图EA文件.rar

    在给定的压缩包文件中,我们关注的是结构型设计模式,这些模式主要用于处理类和对象的组合与结构,以实现更灵活、可扩展的设计。下面我们将详细探讨其中涉及到的几个模式:桥接模式、适配器模式、装饰者模式和组合...

    软件设计模式结构型模式实验代码

    包含5个实验,桥接模式(电子商务网站常有这样的功能:发送消息通知,比如订货发货通知等),适配器模式(电子商务网站有购物车的功能,可以把挑选的东西加入购物车,可以把挑选的东西加入购物车、删除或者更改购买...

    结构型模式部分知识

    在软件设计领域,结构型模式是面向对象设计中的一种重要思想,它主要关注如何组织类和对象,以形成更复杂的结构,同时保持代码的清晰性和可维护性。本资料是关于高等软件工程中的7大结构型模式的PPT总结,包含了大量...

    行为型模式+结构型模式+创建型模式:三大设计模式实例剖析与深入解读

    在给定的标题和描述中,我们关注的是三种主要的设计模式类别:行为型模式、结构型模式和创建型模式。下面将分别对这三大类模式进行详细阐述,并通过实例剖析它们的核心概念和应用场景。 **行为型模式**主要关注对象...

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...

    设计模式原理与应用之结构型模式.pptx

    结构型模式是设计模式的一种分类,它关注如何组合类和对象,构建更大的结构。本篇主要讨论了七种结构型模式:Adapter、Bridge、Composite、Decorator、Façade、Flyweight和Proxy。 1. **Adapter模式**: - 适配器...

    23种设计模式-结构型模式.docx

    《23种设计模式——结构型模式解析》 设计模式是软件工程中的一种最佳实践,它们是解决常见问题的经验总结,被广泛应用于软件设计中,以提高代码的可读性、可维护性和复用性。在众多的设计模式中,结构型模式尤其...

    设计模式2-结构型模式&设计模式基本原则

    在本文中,我们将深入探讨结构型模式以及设计模式的基本原则。 结构型模式是设计模式的一种类别,它关注如何组合类和对象以创建更复杂的结构。这类模式主要涉及类和对象的组合,分为类模式和对象模式。类模式使用...

    软件架构与设计模式实验(结构型模式)定义.pdf

    软件架构与设计模式实验(结构型模式)定义 本实验报告的主要目的是设计适配器模式(Adapter)以掌握“结构型模式”的工作原理、应用环境和应用方法。实验中,我们将使用 Java 语言设计一个仿生机器人,使用适配器...

    Bridge 桥接模式(结构型模式)

    视频资源“7.Bridge 桥接模式(结构型模式).wmv”可能涵盖了以下内容: 1. 桥接模式的概念解释和基本结构。 2. 桥接模式的UML类图展示,解释各个角色之间的关系。 3. 实例演示,如图形界面库的设计,其中颜色和形状是...

    C#面向对象设计模式纵横谈-结构型模式(合集)

    本资源“C#面向对象设计模式纵横谈-结构型模式(合集)”由李建忠讲师讲解,涵盖了7种重要的结构型设计模式,它们对于构建高效、可维护的C#应用程序至关重要。以下是这7种结构型模式的详细介绍: 1. **代理模式**:...

    设计模式(创建型、结构型、行为型)

    结构型模式是指在软件设计中,如何将类组合在一起去构成更大的结构的模式。它主要解决了类之间的组合问题,包括适配器、桥接、组合、装饰、外观、飞weight和代理等七种模式。 行为型模式是指在软件设计中,如何定义...

Global site tag (gtag.js) - Google Analytics