设计模式c#语言描述——适配器模式

设计

设计模式c#语言描述——适配器(Adapter)模式

*本文参考了《JAVA与模式》的部分内容,适合于设计模式的初学者。

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。包括类的适配器模式和对象的适配器模式两种不同的形式。

类的适配器模式把被适配的类的API转换成为目标类的API,其静态结构图如下:

模式的角色如下:

目标(Target)角色:这就是所期待得到的接口。注意这里讨论的是类的适配器模式,因此目标不可以是类。

源(Adaptee)角色:现有需要适配的接口。

适配器(Adapter)角色:把源接口转换成目标接口。

Target;

public interface Target

{

void sampleOperation1();

void sampleOperation2();//源类不包含的方法

}// END INTERFACE DEFINITION Target

Adaptee;

public class Adaptee

{

public void sampleOperation1()

{

}

}// END CLASS DEFINITION Adaptee

Adapter;

public class Adapter : Adaptee,Target

{

public void sampleOperation2()

{

}

}// END CLASS DEFINITION Adapter

类的适配器模式的效果:

使用一个具体类把源适配到目标中,这样一来,如果源以及源的子类都使用此类适配,就形不通了。

由于适配器类是源的子类,因此可以在适配器类中置换掉(Override)源的一些方法。

与类的适配器模式相似,对象的适配器模式把被适配的类的API转换成目标类的API,与类的适配器模式不同,对象的适配器模式不是使用继承关系连接到Adaptee类,而是使用委派关系,类图如下所示:

Target;

public interface Target

{

void sampleOperation1();

void sampleOperation2();

}// END INTERFACE DEFINITION Target

Adaptee;

public class Adaptee

{

public void sampleOperation1()

{

}

}// END CLASS DEFINITION Adaptee

Adapter:

public class Adapter : Target

{

private Adaptee adaptee;

public void Adapter(Adaptee adaptee)

{

this.adaptee=adaptee;

}

public void sampleOperation1()

{

adaptee.sampleOperation1();

}

public void sampleOperation2()

{

}

}// END CLASS DEFINITION Adapter

对象适配器模式的效果:

一个适配器可以把多种不同的源适配到同一个目标。也就是说,同一个适配器可以把源类和它的子类都适配到目标接口。

与类的适配器相比,要想置换源类的方法就不容易。如果一定要置换源类的方法,就只好先做一个源类的子类,将方法置换掉,再把源类的子类当作真正的源进行适配。

时间: 2024-10-27 22:57:40

设计模式c#语言描述——适配器模式的相关文章

设计模式c#语言描述——建造者模式

设计 设计模式c#语言描述--建造者(builder)模式 *本文参考了<JAVA与模式>的部分内容,适合于设计模式的初学者. 建造模式是对象的创建模式.建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 一个产品常有不同的组成成分作为产品的零件,它们通常叫做产品的内部表象.不同的产品可以有不同的内部表象,也就是不同的零件.使用建造模式可以使客户不需要知道所生成的产品的对象有哪些零件,每个产品的对应零件彼此有何不同,是怎么建造出来

设计模式c#语言描述——合成(Composite)模式

设计 设计模式c#语言描述--合成(Composite)模式 *本文参考了<JAVA与模式>的部分内容,适合于设计模式的初学者. 合成模型模式属于对象的结构模式,有时又叫做部分-整体模式.合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待.如文件夹与文件就是合成模式的典型应用.根据模式所实现接口的区别,合成模式可分为安全式和透明式两种. 安全式的合成模式要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中.类图如下所示: 涉及

设计模式(五)适配器模式Adapter(结构型)

设计模式(五)适配器模式Adapter(结构型) 1. 概述:          接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化.         例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器.可以使用这个电源适配器充电.这个iphone的电源适配器就是类似我们说的适配器模式.(电源适配器就是把电源变成需要

《面向对象设计实践指南:Ruby语言描述》目录—导读

内容提要 面向对象设计实践指南:Ruby语言描述 本书是对"如何编写更易维护.更易管理.更讨人喜爱且功能更为强大的Ruby应用程序"的全面指导.为帮助读者解决Ruby代码难以更改和不易扩展的问题,作者在书中运用了多种功能强大和实用的面向对象设计技术,并借助大量简单实用的Ruby示例对这些技术进行全面解释. 全书共9章,主要包含的内容有:如何使用面向对象编程技术编写更易于维护和扩展的Ruby代码,单个Ruby类所应包含的内容,避免将应该保持独立的对象交织在一起,在多个对象之间定义灵活的接

《面向对象设计实践指南:Ruby语言描述》—第1章 1.2节设计工具

1.2 设计工具 面向对象设计实践指南:Ruby语言描述 设计可不是遵循一套固定规则就完事的动作.它是每次沿着一条分支前进的旅行,在这条路径上早期的选择关闭了某些选择,同时又会打开其他新的选择.在设计过程中,你会徘徊于各种错综复杂的需求中,这里的每个关键时刻都代表着一个决策点,它会对将来产生影响. 像雕塑家有凿子和文稿一样,面向对象的设计师也有自己的工具-原则和模式. 1.2.1 设计原则 SOLID原则首先由Michael Feathers提出,再由Robert Martin进行了推广.它代表

《数据结构与算法:Python语言描述》一1.3算法和算法分析

1.3算法和算法分析 本节集中讨论算法的问题,特别是算法的性质及其分析技术. 1.3.1问题.问题实例和算法 在考虑计算问题时,需要清晰地区分问题.问题实例和算法三个概念,并理解它们之间的关系,这就是本小节讨论的内容.三个基本概念考虑一个计算问题时,需要注意到三个重要概念:问题:一个问题W是需要解决(需要用计算求解)的一个具体需求.例如判断任一个正整数N是否为素数,求任一个方形矩阵的行列式的值等.虽然可以严格定义"问题"的概念,但在这里还是想依靠读者的直观认识.总而言之,现实世界中存在

用C语言描述数据结构

学好计算机,主要要从三个方面做起,其中,第一步就是要学好各种语言,这是第一步,对各种语言有一个大体的了解;然后就是数据结构了,它是计算机中的一门核心的课程,也是一门信息计算;在最后本人认为就是算法了,它也是这三部中最难得一步了,要学好计算机,做一名优秀的程序元,这三步是最基本的,然后再是在他们的基础上层层深入. 在过去的一年之中,我对计算机的语言有了一个大体的了解,在前一段时间,我自学了数据结构,下面,谈谈我自学的数据结构的看法,在接下来一段有人指点的时间里,再来纠正以前对数据结构的错误看法.

跪求解答-c语言描述:为整数定义

问题描述 c语言描述:为整数定义 为整数定义一个抽象数据类型,它包含整数的常见运算,每一个运算对应一个函数,由它的输入/输出定义 解决方案 十字链表的定义及C语言描述C语言itoa()函数和atoi()函数详解(整数转字符C实现)C语言itoa()函数和atoi()函数详解(整数转字符C实现) 解决方案二: 实现整数的四则运算?还是要实现运算符重载?

《数据结构与算法:Python语言描述》一第1章 绪论

第1章 绪论 作为基于Python语言的"数据结构与算法"教程,本章首先讨论一些与数据结构和算法有关的基础问题,还将特别关注Python语言的一些相关情况. 1.1计算机问题求解 使用计算机是为了解决实际问题.计算机具有通用性,其本身的功能很简单,就是能执行程序,按程序的指示完成一系列操作,得到某些结果,或者产生某些效果.要想用计算机处理一个具体问题,就需要有一个解决该问题的程序.经过长期努力,人们已经为各种计算机开发了许多有用的程序.在面对一个需要解决的问题时,如果恰好有一个适用的程