结构型模式总结

结构型模式描述的如何组合类或对象以获取更大的组合,在这里,结构型类模式是利用继承机制来组合接口或实现;结构性对象模式不是对接口或实现进行组合,而是描述了如何对一些对象进行组合。这里对它们的相似点和不同点作简要分析:

1、Adapter和Bridge

首先二者都给另一个对象提供了一定程度上的间接性,因而有利于系统的灵活性。它们都涉及从自身意外的一个接口向这个对象转发请求。不同之处有:

Adapter作为唯一一个结构型类模式,它是为了解决两个已有接口之间不匹配的问题。它不需要对两个独立设计的类中的任何一个进行重新设计,就能使他们协同工作。而Bridge模式则是对抽象接口和它的实现部分进行桥接。Bridge做到了将抽象接口和实现部分进行分离,从而使得它们能够独立变化。使用Bridge模式的前提是:一个抽象将有多少个实现部分,并且抽象和实现两者都是独立演化的。

2、Composite、Decorator和Proxy

Composite和Decorator模式具有相似的结构图,它们都是基于递归在组合来组织可变数目的对象。但是它们的本质是不同的,Decorator旨在使你能够不需要生成子类即可给对象添加职责,这样避免了实现所有功能组合(组合数可能很庞大),从而导致子类急剧增加。而Composite则有不同的目的,它旨在构造类,使多个相关的对象能够以统一的方式处理,且多重对象也可被当成一个对象来处理。它的重点不在于修饰,而在于表示。尽管目的不同,但二者具有互补性。因此Composite与Decorator经常互补使用。

与Decorator模式结构相似的还有Proxy。这两种模式都描述了怎样为对象提供一定程度上的间接引用,Proxy模式构成一个对象并为用户提供一致的接口。但与Decorator模式不同的是,Proxy模式不能动态地添加或分离性质,它也不是为递归组合而设计的。它的目的是,当直接访问一个实体不方便或不符合需要时,为这个实体提供一个替代者,例如,实体在远程设备上,访问受到限制或者实体是持久存储的。 Proxy 模式中,实体定义了关键功能,而 Proxy提供(或拒绝)对它的访问。在Decorator模式中,组件仅提供了部分功能,而一个或多个Decorator负责完成其他功能。Decorator模式适用于编译时不能(至少不方便)确定对象的全部功能的情况。

区分不同模式间的差别也是很重要的。

原文地址:https://www.cnblogs.com/codeMedita/p/7374058.html