Welcome

首页 / 软件开发 / 数据结构与算法 / 设计模式之旅-第一天 适配器模式

设计模式之旅-第一天 适配器模式2010-01-03 cnblogs holywolf什么是设计模式

在软件开发的世界里,许多领域中的问题具有相似的特性。就像造房子一样,不管要盖一座购物中心 ,还是要盖一座假日酒店,它们之间都有基本上相似的工作步骤,都需要搭建梁柱,铺置房顶等工作。 在做这些工作时都需要遵循某种特殊的技术要求,以使得房子的结构、承受能力达到合理,这些规则是 前人经过精确的计算和失败的教训得来的。对于软件开发也一样,如果我们希望编写出来健壮、灵活的 应用程序,也有必要进行精细的设计,并且可以通过遵循某种规则以达到这个目标。这些规则或者称之 为技巧就是设计模式。

设计模式领域中有一本经典的著作:《Design Patterns: Elements of Reusable Object-Oriented Software》(即《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为“四人组(Gang of Four) ”,而这本书也就被称为“四人组(或 GoF)”书。此书中介绍了23种设计模式,随着 技术的不断发展,新的设计模式不断的被发现,但这23种设计模式是最值得学习和掌握的。 C#设计模式 中将设计模式划分为以下5类:

接口型模式

职责型模式

构造型模式

操作型模式

扩展型模式

各类别中包含的模式:

类别包含的设计模式
接口型适配器模式,外观模式,合成模式,桥接模式
职责型单件模式,观察者模式,中介者模式,代理模式,职责链模式,享元模 式
构造型生成器模式,工厂方式模式,抽象工厂模式,原型模式,备忘录模式
操作型模板方法模式,状态模式,策略模式,命令模式,解释器模式
扩展型装饰模式,迭代器模式,访问者模式

第一天 适配器模式

一.现实问题

在进行项目开发时,经常会发生类之间的调用关第,有可能存在以下两种情况:

1.我们已经定义了类调用关系,例如类需要通过调用实现了某个接口的类来实现特定功能,而这个 功能第三方类已经实现了,第三方类的方法签名可能与客户期望的签名不太一致。

2.这些类提供的方法可能只是完成了我们所需要的大部分功能,我们还要在此基础上执行一点点额外 的操作;

二.解决方案

以上两种问题实际上都是客户需要对提供功能的服务类的调用,可以有以下几种解决方案:

1.直接在客户类里实例化服务类,进行方法调用,并且根据需要在调用后进行额外的处理。

2.创建一个中介,将方法调用传递给中介,由中介请求服务类并执行额外操作。

比较而言,第二种方式更为合理,因为通过中介类的引处,降低了客户类和服务类的耦合,在服务类 发生变化时,可以不影响到客户类。

三.概念定义

对于这种问题,可以使用适配器模式。适配器模式的目的在于:如果客户需要使用某个类的服务,而 这项服务是这个类用一个不同的接口提供的,那么,可以使用适配器为客户提供一个期望的接口。

存在两种适配器的形式:接口适配器(类适配器)和对象适配器。