设计模式 结构型模式

定义


定义



结构型模式,讨论的是如何将类和对象组合,形成更为复杂的结构
采用继承机制来组合接口或实现(类结构型模式),
或者通过组合一些对象,从而实现新的功能(对象结构型模式)。

类和对象构成更复杂的结构就像搭积木的过程,通过不同组合,形成不同形状。

主导思想


1、组合类和对象以形成更复杂的结构。

2、尽量使用关联关系来代替继承关系。

分类


结构型模式又分为对象结构型模式类结构型模式

对象结构型模式把多个类组合成一个更复杂的系统,在类结构模式中一般只存在继承和实现关系。

结构型模式通过关联、依赖关系使得一个类中定义另一个类的实例对象,然后通过该对象调用其方法。

根据组合/复用原则 (CARP),在代码中应尽量使用关联关系来代替继承关系。

组合/聚合复用原则 (CARP)

尽量使用组合 (也译为合成) /聚合,不要使用类继承。

代表模式


适配器模式 (Adapter Pattern)

桥接模式 (Bridge Pattern)

装饰者模式 (Decorator Pattern)

组合模式 (Composite Pattern)

外观模式 (Facade Pattern)

享元模式 (Flyweight Pattern)

代理模式 (Proxy Pattern)

时间: 2024-08-02 18:52:07

设计模式 结构型模式的相关文章

设计模式——结构型模式

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

设计模式-结构型模式,适配器模式(4)

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能.举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器.您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡. #!/usr/bin/env python # encoding: utf-8 class Target(object): def request(self

设计模式-结构型模式,python组合模式

设计模式上大的方向上分继承和组合,就是类模式和对象模式.此篇的组合模式非继承和组合概念中的组合.桥接 策略 代理 装饰者都用了组合,此组合非彼组合. 组合模式 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式,它创建了对象组的树形结构. 这种模式创建了一个包含自己对象组的类.该类提供了修改相同对象组的方式. 我们通过下面的实例来演示组合模式的用法.

看透设计模式-结构型模式

这里我们主要讨论 结构型模式 适配器模式,: ● Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类. ● Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系. ● Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,

c#设计模式·结构型模式

看的过程中,发现好多模式都用过,只是没有总结,或者是不知道叫这个名字吧··· 这里列举结构型模式,适配器.桥接.过滤.组合.装饰器.外观.享元.代理, 适配器模式:将现存的对象放到新的环境里边去,但是接口不一样,其实就是添加一个类把新的接口包装一样 之前公司的wcf服务端就是这种模式,公司很多部门,不同部门不同的业务都有自己相应的服务,之前是分开的,用的服务多的时候开服务很麻烦,现在想把他们统一起来,就可以用这种方式,wcf服务以接口定义契约,在实现类中写具体业务,可以定义一个统一的空接口,然所

设计模式——结构型模式之适配器模式(二)

模式的定义与特点 适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作.适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些. 该模式的主要优点如下. 客户端通过适配器可以透明地调用目标接口. 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类. 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题.

JDK 源码 阅读 - 3 - 设计模式 - 结构型模式

1.适配器(Adapter) java.util.Arrays$ArrayList(java.util.Arrays#asList()):  这里要特别注意,这里的ArrayList是Arrays的内部类不是java.util.ArrayList.这里的ArrayList是外部不可见的,用来把一个array适配成List.   Sample: String a[] = new String[]{"123","abc","xyz","dd

设计模式--结构型模式--装饰模式

装饰者模式: 我们可以通过继承和组合的方式来给一个对象添加行为,虽然使用继承能够很好拥有父类的行为,但是它存在几个缺陷: 一.对象之间的关系复杂的话,系统变得复杂不利于维护. 二.容易产生“类爆炸”现象. 三.是静态的.在这里我们可以通过使用装饰者模式来解决这个问题. 装饰者模式,动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更加有弹性的替代方案.虽然装饰者模式能够动态将责任附加到对象上,但是他会产生许多的细小对象,增加了系统的复杂度. uml类图如下: 装饰者Decorator与被

java设计模式--结构型模式--组合模式

什么是组合模式,这个有待研究,个人觉得是各类组合而形成的一种结构吧. 组合模式: 1 组合模式 2 概述 3 将对象组合成树形结构以表示"部分-整体"的层次结构."Composite使得用户对单个对象和组合对象的使用具有一致性." 4 5 6 适用性 7 1.你想表示对象的部分-整体层次结构. 8 9 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象. 10 11 12 参与者 13 1.Component 14 为组合中的对象声明接