《大话设计模式》笔记(2)——结构型模式

7、适配器模式(Adapter)

定义:有时候也称包装样式或者包装,将一个类的接口适配成用户所期待的。它使得原本接口不兼容而不能一起工作的类可以一起工作。

UML:

PS:适配器模式算比较容易理解的,其实现主要是在适配器Adapter包装一个Adaptee,并向外部提供客户所需要规格的接口,而其该接口的实现就是调用源接口Adaptee.SpecificRequest()。

适配器模式是因为目标接口和源接口规格不匹配而设计的模式。

应用场景:.net中的DataAdapter就是DataSet与数据源间的适配器

8、桥接模式(Bridge)

定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。

UML:

PS:定义中说将抽象与它的实现分离确实不好理解,拿上面UML图来说,我的理解是让ConcreteImplementor这个“实现”,与RefinedAbstraction这个”抽象“相分离,这样使得RefinedAbstraction中的Operation方法,可以灵活的切换成ConcreteImplementorA或ConcreteImplementorB的实现。

参考代码:

应用场景类比:手机软件的实现与具体品牌手机相分离。

9、组合模式(Composite)

定义:组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。

UML:

PS:对于这个模式看书上的例子能够懂,但是感觉不知道如何应用到真实的环境中去。

应用场景类比:公司管理系统

10、装饰模式(Decorator)

定义:动态地给一个对象添加一些额外的功能。

UML:

PS:装饰类Decorator中定义了一个Component变量,使用具体装饰类ConcreteDecorator对一个对象进行装饰时,先设置装饰者中Component变量为被装饰对象ConcreteComponent,然后装饰者ConcreteDecorator在其内部方法Operation()对被装饰对象进行装饰。

被装饰对象ConcreteComponent无需知道装饰者Decorator的存在,装饰者ConcreteDecorator对Component动态添加功能。

应用场景类比:装扮——穿T恤、裤子、鞋等等。

11、外观模式(Facade)

定义:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

UML:

PS:我觉得这就相当于我们常写的帮助类,把由一系列繁琐的步骤组合成一个方法,便于外部使用。

应用场景类比:炒股和投资基金

12、享元模式(Flyweight)

定义:运用共享技术有效的支持大量细粒度的对象。

UML:

PS:统一从FlyweightFactory中生成Flyweight对象,如果存在该对象就直接返回,否则就实例化,以减少实例化多个相同对象。享元对象不会随外部环境改变而改变的共享部分,则称为享元对象的内部状态,否则就是外部状态。在享元模式中,应该尽可能把外部状态移到类实例外面,在方法调用时再将它们传递进来,这样就可通过共享大幅度地减少单个实例的数目。

应用场景类比:建网站、围棋

13、代理模式(Proxy)

定义:为被代理对象提供一种代理,以控制对这个对象的访问。

UML:

PS:Subject类定义了被代理者RealSubject和代理Proxy共用的接口,这样代理者Proxy和被代理者RealSubject就拥有了相同的功能,代理者Proxy内部保存被代理者RealSubject的实例,这样代理者Proxy中的每个功能内部去调用被代理者RealSubject中相应的功能。

参考代码:

应用场景:WebService、安全代理

原文地址:https://www.cnblogs.com/Lau7/p/8350940.html

时间: 2024-10-10 15:22:57

《大话设计模式》笔记(2)——结构型模式的相关文章

Java经典设计模式之七大结构型模式(附实例和详解)

博主在大三的时候有上过设计模式这一门课,但是当时很多都基本没有听懂,重点是也没有细听,因为觉得没什么卵用,硬是要搞那么复杂干嘛.因此设计模式建议工作半年以上的猿友阅读起来才会理解的比较深刻.当然,你没事做看看也是没有坏处的. 总体来说设计模式分为三大类:创建型模式.结构型模式和行为型模式. 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则.设计模式的六大原则是设计模式的核心思想,详情请看博主的另外一篇文章:Java经典设计模式之五大创建模式(附实例和详解).

设计模式-Bridge(结构型模式)-用于客户需求较多,频繁对类进行添加修改的情形,将抽象类与具体实现类分开

以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //AbstractionImp.h #pragma once class AbstractionImp { public: virtual ~AbstractionImp(); virtual void Operation() = 0; protected: AbstractionImp(); private: }; class ConcreateAbstractionImpA :public AbstractionIm

GOF 23设计模式之(结构型模式一)

目录 1.代理模式 1.1静态代理 1.2动态代理 2.适配器模式 2.1类适配器模式 2.2对象适配器模式 2.3双向适配器模式 3.桥接模式 一.代理模式(Proxy) 访问者对象不适合或者不能直接引用目标对象,需要通过代理对象作为访问对象和目标对象之间的中介.并且可以设置一些前置设置.后置处理.通俗来说,代理模式就像生活中的中介. 可以分为:静态代理.动态代理 核心角色: (1)抽象主题类(Subject):通过接口或抽象类声明真实主题和代理对象实现的业务方法 (2)真实主题类(Real

GOF 23设计模式之(结构型模式二)

目录 1.装饰模式 2.外观模式 3.享元模式 4.组合模式 4.1透明方式 4.2安全方式 一.装饰模式(Decorator) 可以动态的为对象添加新的功能,是一种用于代替继承的技术,无须通过继承添加子类就能扩展对象的新功能.使用对象的关联关系代替继承关系.同时避免类型体系的快速膨胀. 核心角色: (1)抽象构件角色(Component):定义一个抽象的接口以规范准备接收附加责任的对象. (2)具体构件角色(Concrete Component):实现抽象化构件,通过装饰角色为其添加一些职责.

设计模式——结构型模式

设计模式的另一大类型为结构型.共收录了7个模式,分别为适配器模式.桥接模式.组合模式.装饰模式.外观模式.享元模式.代理模式.下面从特点和使用两方面小探,欢迎交流!      适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.[大话设计模式]        特点:需要交流的两方,在数据和行为都匹配,但接口不符时,我们应该考虑用适配器,目的是促使交流和复用.可以理解为入乡随俗,相同的意思,不同的表达

设计模式之十二:Proxy(代理)—对象结构型模式

2014-05-29 星期四 21:08:37  Proxy,继续GOF.此模式未按GOF编写. c++中使用StringBuilder 1.Intent Provide a surrogate or placeholder for another object to control access to it. 为其他对象提供一种代理以控制对这个对象的访问. 2.Also Known As 3.Motivation 4.Applicability 在以下情况使用适配模式: ● 创建开销大的对象时

设计模式之十一:Composite(组合)—对象结构型模式

2014-05-28 星期三 21:41:44  Composite,继续GOF. Composite组合模式 1.Intent Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. 将对象组合成树形结构以表示"部分 -整体&quo

设计模式之十三:Flyweight(享元)—对象结构型模式

2014-06-15 星期日 9:35:04  Flyweight,继续GOF. 1.Intent Use sharing to support large numbers of fine-grained objects efficiently. 运用共享技术有效地支持大量细粒度的对象. 2.Also Known As 3.Motivation A flyweightis a shared object that can be used in multiple contexts simultan

大话设计 之结构型模式

一.它是什么? 结构型模式是为解决怎样组装现有的类,设计他们的交互方式,从而达到实现一定功能的目的.同时,结构型模式包容了对很多问题的解决,例如扩展性(外观模式,组成模式,代理模式,装饰模式),封装性(适配器模式,桥接模式) 二.它能做什么? 在不破坏类封装性的基础上,实现新的功能.这一点包括装饰模式,代理模式. 在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互,这一点包括桥接和适配器模式. 创建一组类的统一访问接口,这是组成模式 对同一类创建不同的访问界面,提供给不同需要的访问者