结构型模式

涉及如何组合类和对象来获得更大的结构。

  1. 结构型类模式: 采用继承机制来组合接口或实现,通常是静态的,类继承方式。
  2. 结构型对象模式: 描述如何对对象进行组合,从而获得新功能的一些方法。

相关设计模式

Composite模式(组合模式)

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

Proxy模式(代理模式)

proxy对象作为其他对象的一个方面替代或占位符。可以多种形式:如局部空间代表远程地址空间中的对象、要求被加载的较大的对象、保护敏感对象的访问。
proxy还提供了对对象的一些特有性质的一定程度上的间接访问,从而限制、增强或修改这些性质。

Flyweight模式(享元模式)

为共享对象定义了一个结构。至少两个原因需要共享对象:效率和一致性。享元模式主要强调对象的空间效率。

Facade模式(门面/外观模式)

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

Bridge模式(桥接模式)

将对象的实现和抽象分离,从而可以独立地改变他们,重点是桥接类。

Decorator模式(装饰模式)

描述如何为对象动态的添加职责。采用递归方式组合对象,从而允许你添加任意多的对象职责。
重点,每个decorator对象必须与其组件接口兼容,并且保证将消息传递给它。


结构型模式的讨论

总的来说,有一定相似性,继承或接口实现机制用于基于类的模式,而对象组合机制用于对象式模式。

适配器模式和桥接模式

共同点:
都是给另一个对象提供一定程度的间接性,有利于系统的灵活性。它们都涉及到从自身以外的一个接口向这个对象转发请求。

异同:
适配器模式三要素:目标接口+待适配类+适配器,继承待适配类(或者持有待适配对象),实现目标接口,完成适配。
桥接模式三要素:桥接类+接口+接口实现(多种),桥接类持有接口对象,并且面向接口编程,实现抽象向具体的桥接过程,为用户提供一个稳定的接口。
桥接模式往往在类的设计之前实施,因为已经预见这个抽象将有多种实现;适配器模式在类已经设计好后实施。
适配器使得两个已有的接口协同工作。而facade模式,往往定义新的接口。

组合模式、装饰模式和代理模式

共同点:
组合模式和装饰模式,都基于递归组合来组织可变数目的对象。
装饰模式和代理模式,两者都描述了怎么为对象提供一定程度上的间接引用,在实现时,均持有一个指向另一对象的指针,并向这个对象发送请求。

异同一:
组合模式三要素:组件(接口)+组合(实现)+树(结构)
装饰模式三要素:接口(被装饰者的抽象)+装饰者(持有被装饰着的实例,常见构造器注入)
代理模式三要素:接口(代理类和被代理类的抽象)+代理类(持有被代理类的实例)

异同二:
装饰模式旨在不生产子类即可给对象添加职责。组合模式旨在构造类,使多个相关的对象能够以统一的方式处理,重点在于表示而不是修饰。
代理模式不能动态的添加或分离性质,不为递归设计,目的是直接访问一个实体不方面或不和要求时,为这个实体提供一个替代者。
代理模式中,实体定义了关键功能,代理提供对他的访问。而装饰模式中,实现仅提供部分功能,一个或多个装饰器完成其他功能。
装饰模式,适用于编译时不能(或不方面)确定对象的全部功能的情况,有一定开放性。代理模式,则强调一种关系,往往是静态表述。

分类:

技术点:

相关文章: