Design Pattern----Structural Patterns

Structural Patterns(结构模式)主要关注于如何将一些小的类或对象组织成一个大的结构。Structural Patterns分为Structural Class Patterns(结构类模式)和Structural Object Patterns(结构对象模式),Structural Class Patterns用一些面向对象的继承和封装性质将一些接口和对接口的实现组织起来,使得接口的外部调用和接口的内部实现独立;而Structural Object Patterns描述的却是将一些小的对象组合起来实现一些新的功能结构的方法,在这种模式下,使得这些对象的组合变得灵活,甚至可以在运行时决定或者修改组合方式。

Structural Patterns主要分为以下7种模式:Adapter Pattern(适配器模式),Bridge Pattern(桥接模式),Composite Pattern(组合模式),Decorator Pattern(装饰器模式),Facade Pattern(外观模式),Flyweight Pattern(享元模式),Proxy Pattern(代理模式)。

Adapter Pattern:

Adapter Pattern(适配器模式)会将一些类接口转化成使用者所期望的接口,使得一些在接口上不兼容的类相互协调起来。

在开发的过程中可能会遇到一种情况,某个功能如果自己去实现的话可能需要花费大量的时间和精力(甚至自己根本就不会实现),而网上又有现成可用的工具包或者库,这个时候如果用工具包来实现这一功能当然能够事半功倍。工具包开发出来就是方便将来的开发者代码重用,但是有的时候并不能直接重用,因为工具包只提供了一种(或者少量的)形式的接口,而不同的开发所需要用到的接口形式几乎是各不相同,工具包所提供的接口不可能全部对各种开发所需要的接口形式兼容。有两种方法可以解决这个问题:1.修改工具包的接口。2.用Adapter Pattern将工具包的接口转化(不是修改)成所需要用到的形式。使用第一种方法有几点需要注意:1.工具包的接口和所需要用到的接口形式不兼容是正常的,工具包本来就是通用的,而不是适用于某一个特定的开发,所以要改动也是特定开发中使用工具包方式的改动。2.如果要改动工具包的接口形式的话,还需要知道工具包的源代码。3.对工具包的改动可能需要花费大量的工作,还可能出错。因此,通常不会选择直接修改工具包的接口形式,而是用Adapter将这些接口形式间的不兼容转化成兼容。

(未完待续……)

时间: 2024-11-05 12:33:10

Design Pattern----Structural Patterns的相关文章

C++ Design Pattern: What is a Design Pattern?

Q: What is a Design Pattern? A: Design Patterns represent solutions to problems what arise when developing software within a particular context. Each pattern describes a problem which occurs over and over again in our environment, and then describes

[Design Pattern] Command Pattern 命令模式

发现公司的代码好像有用到 Command Pattern,回顾重温下. Command Pattern 的类图结构如下: 参考 <Head First Design Patterns(英文版)>P245 绘制 我所理解的 Command Pattern 如图. caller, action, subject 分别对于类图中的 Invoker, Command, Receiver, 他们都可以由使用者 Client 进行配置 参考资料: Head First Design Pattern. 推荐

Design Pattern - Template Method(C )

Definition Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure. Participants The classes and/or obj

Decorator Design Pattern

Decorator pattern allows a user to add new functionality to an existing object without altering its structure. This type of design pattern comes under structural pattern. This pattern creates a decorator class which wraps the original class and provi

Flyweight Design Pattern

Flyweight pattern is primarily used to reduce the number of objects created decrease memory footprint increase performance. Flyweight pattern tries to reuse already existing similar kind objects by storing them and creates new object when no matching

[Design Pattern] Strategy

范例参考至 Head First Design Patterns IFlyBehavior public interface IFlyBehavior { public void fly(); } FlyNoWay public class FlyNoWay implements IFlyBehavior { public void fly() { System.out.println("I can't fly!!"); } } FlyWithWings public class Fl

java design pattern - adapter pattern

场景 适配器模式 总结 参考资料 场景 在编程中我们经常会遇到驴头不对马嘴的情况,比如以前是继承A的接口的对象,现在外部调用的时候需要该对象已B接口的形式来调用 ,这个时候我们可以让对象同时集成A和B接口来达到目的,不过,这样又违反了开闭原则,这个时候我们可以使用适配器模式来达到目的. 适配器模式 适配器模式是一种结构模式,可以帮助我们把对象以不同的接口方式来调用.主要由3个角色组成: Target 外部调用要求的接口方式 Adapter 中间用来协调的适配器 Adaptee 原始对象 首先,我

DP什么意思 design pattern 设计模式

DP  design pattern 大话设计模式  中的DP 是设计模式的意思 设计模式的书 ,最经典最原始的就是 GOF 的<设计模式>了. 设计模式的书基本上大多是以这 20 多个模式分开讲.含<大话设计模式> 学了 OOL 写的程序基本上是 OB 的. 只有慢慢掌握了 DP 才能写出真正的 OO 程序. 思想 -> 设计原则 -> DP -> OOD

Head First Design Pattern 读书笔记(2) 观察者模式

Head First Design Pattern 读书笔记(2) Observer Pattern 观察者模式 Observer Pattern 类图 定义 观察者模式:在对象间定义一个一对多的关系,当其中一个的对象发生改变时,所有依赖于这个对象的对象(即观察者们)都会自动更新或做执行某些行为. 几个OO的原测 尽量以松耦合的方式处理对象间关系–>软件工程时候学的"高內聚,低耦合"的好处 关于观察者模式 被观察对象通知观察者可以使用推送的方式(类图中带参数的notifyActi

Design Pattern Singleton 单一模式

单一模式的几个注意点: 一) 设计单一模式,首先需要把构造函数给私有化了,不让外界访问,那么外界只能通过提供的函数获取一个新的类. 二) C++的单一模式,记得要在类外初始化一个类,否则或内存出错的. 三) 这个唯一的类必须是要静态的 程序: #ifndef _SINGLETON_H #define _SINGLETON_H #include <iostream> #include <string> using namespace std; class DuGuJiuJian {