北京通州区网站制作,热搜榜上2023年热门话题,网页设计公司哪家值得推荐,ie不支持wordpress接前一篇文章#xff1a;软考 系统架构设计师系列知识点之设计模式#xff08;2#xff09; 所属章节#xff1a;
老版#xff08;第一版#xff09;教材
第7章. 设计模式 第2节. 设计模式实例 2. 结构型模式
结构型模式控制了应用程序较大部分之间的关系。它将以不同…接前一篇文章软考 系统架构设计师系列知识点之设计模式2 所属章节
老版第一版教材
第7章. 设计模式 第2节. 设计模式实例 2. 结构型模式
结构型模式控制了应用程序较大部分之间的关系。它将以不同的方式影响应用程序例如Adapter模式允许两个不兼容的系统进行通信而Facade模式允许在不删除系统中所有可用选项的情况下为用户提供一个简化的界面。结构型模式允许在不重写代码或自定义代码的情况下创建系统。这可以使系统具有增强的重复实用性和应用性能。结构型模式包括
AdapterBridgeCompositeDecoratorFacadeFlyweightProxy
1Adapter适配器模式
Adapter模式可以充当两个类之间的媒介它可以转换一个类的接口这样就可以被另外一个类使用这使得具有不兼容接口的类能够协同使用。Adapter模式实现为客户端所知的接口并且为客户端提供对不为其所知的类实例的访问。Adapter对象可以在不知道实现该接口的类的情况下提供该接口的功能。
Adapter模式的优点如下
允许两个或多个不兼容的对象进行交互和通信。提高已有功能的重复使用性。
在以下情况中应该使用Adapter模式
要使用已有类而该类接口与所需的接口并不匹配。要创建可重用的类该类可以与不相关或未知类进行协作。也就是说类之间斌不需要兼容接口。要在一个不同于已知对象接口的接口环境中使用对象。必须要进行多个源之间的接口转换的时候。
2Bridge桥接模式
Bridge模式可以将一个复杂的组件分成两个独立的但又相关的继承层次结构功能性的抽象和内部实现。改变组件的这两个层次结构很简单以至于它们可以相互独立地变化。当具有抽象的层次结构和相应的实现层次结构时Bridge模式是非常有用的。除了可以抽象和实现组合成许多不同的类该模式还可以以动态组合的独立类的形式实现这些抽象和实现。
一句话概括桥接模式将类的抽象部分和它的实现部分分离出来使它们可以独立变化。
Bridge模式的优点如下
可以将接口与实现相分离。提高了可扩展性。对客户端隐藏了实现的细节。
在以下情况中应该使用Bridge模式
想避免在抽象及其实现之间存在永久的绑定抽象及其实现可以使用子类进行扩展。抽象的实现被改动应该对客户端没有影响也就是说不用重新编译代码。
3Composite组合模式
Composite模式允许创建树型层次结构来改变复杂性同时允许结构中的每一个元素操作同一个接口。该模式将对象组合成树型结构来表示整个或部分的层次结构。这就意味着Composite模式允许客户端使用单个对象或多个同一对象的组合。
一句话概括组合模式将对象组合成树型结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
Composite模式的优点如下
定义了由主要对象和复合对象组成的类层次结构。使得添加新的组件类型更加简单。提供了结构的灵活性和可管理的接口。
在以下情况中应该使用Composite模式
想要表示对象的整个或部分的层次结构。想要客户端能够忽略复合对象和单个对象之间的差异。结构可以具有任何级别的复杂性而且是动态的。
4Decorator装饰器模式
Decorator模式可以在不修改对象外观和功能的情况下添加或者删除对象功能。它可以使用一种对客户端来说是透明的方法来修改对象的功能也就是使用初始类的子类实例对初始对象进行授权。Decorator模式还为对象动态地添加了额外的责任这样就在不使用静态集成的情况下为修改对象功能提供了灵活的选择。
一句话概括装饰器模式动态地给一个对象添加一些额外的职责。就扩展功能而言它比生成子类方式更为灵活。
Decorator模式的优点如下
比静态继承具有更大的灵活性。避免了特征装载的类处于层次结构的过高级别。简化了代码因为用户编写的每一个类都针对功能的一个特定部分而不用将所有的行为编码到对象中。改进了对象的扩展性因为用户可以通过编写新的类来作出改变。
在以下情况中应该使用Decorator模式
想要在单个对象中动态并且透明地添加责任而这样并不会影响其它对象。想要在以后可能要修改的对象中添加责任。当无法通过静态子类化实现扩展时。
5Facade模式
Facade模式为子系统的一组接口提供了一个统一的接口。因为只有一个接口该模式就定义了更容易使用子系统的高级接口。这个统一的接口允许对象使用该接口与子系统进行通信从而实现对子系统的访问。
Facade模式的优点如下
在不减少系统所提供的选项的情况下为复杂系统提供了简单接口。对客户端屏蔽了子系统组件。提高了子系统与其客户端之间的弱耦合度。如果每一个子系统使用自身的Facade模式而且系统的其它部分也使用Facade模式与子系统进行通信的话就可以降低子系统之间的耦合度。将客户端请求转换后发送给能够处理这些请求的子系统。
在以下情况中应该使用Facade模式
想要为复杂的子系统提供简单的接口。在客户端和抽象的实现类中存在许多依赖关系。想要对子系统进行分层。
6Flyweight模式
Flyweight模式可以通过共享对象减少系统中低等级的、详细的对象数目。如果一个类实例包含用来互换使用的相同信息Flyweight模式允许程序通过共享一个接口来避免使用多个具有相同信息的实例所带来的的开销。
Flyweight模式的优点如下
减少了要处理的对象数目。如果对象能够持续可以减少内存和存储设备。
在以下情况中应该使用Flyweight模式
应用程序使用大量的对象。由于对象数目巨大导致很高的存储开销。应用程序不依赖于对象的身份。
7Proxy模式
Proxy模式为控制对初始对象的访问提供了一个代理或者占位符对象。它的实现可以有多种类型其中Remote Proxy远程代理和Virtual Proxy虚拟代理是最常见的。
Proxy模式的优点如下
远程代理可以隐藏对象位于不同的地址空间的事实。虚拟代理代理可以执行优化操作例如根据需要创建一个对象。
在以下情况中应该使用Proxy模式
需要比简单的指针更灵活、更全面的对象引用。