动机:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
应用:旧代码复用、类库迁移等。
场景:原有一只SP/2接口的鼠标,现想插在ThinkPad T60上使用,由于T60鼠标接口为USB接口,所以需要一个转换器进行转接。
说明:适配器包括两种实现结构:对象适配器和类适配器。类适配器使用多继承,带来不良的高耦合,一般不使用。
结构
代码实现
namespace DesignPattern.Adapter
{
/**//// <summary>
/// 原有类
/// </summary>
public class SP2Mouse
{
public void MoveSP2()
{
}
public void TuneSP2()
{
}
}
/**//// <summary>
/// 客户希望的接口
/// </summary>
interface IMouse
{
void Init();
void Move();
void Tune();
void End();
}
/**//// <summary>
/// 对象适配器
/// </summary>
public class MouseAdapter : IMouse
{
SP2Mouse sp2Mouse; // 被适配对象
public MouseAdapter()
{
sp2Mouse = new SP2Mouse();
}
public void Init()
{
}
public void Move()
{
sp2Mouse.MoveSP2();
// Do something else
}
public void Tune()
{
sp2Mouse.TuneSP2();
// Do something else
}
public void End()
{
}
}
}
分享到:
相关推荐
——————————————————————————————————————————————
Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...
《Spring技术内幕》学习笔记1——IoC容器体系结构 《Spring技术内幕》学习笔记2——IoC定位Bean定义资源 《Spring技术内幕》学习笔记3——IoC容器载入Bean定义资源文件 《Spring技术内幕》学习笔记4——IoC容器...
设计模式学习笔记,分析了GOF的23种模式和类设计的原则
Talend学习笔记2——mysql文件导入到HDFS
zigbee学习笔记2——添加自己的任务 网络层数据服务
Java设计模式学习笔记
学习笔记之——基于pytorch的FSRCNN 把我的代码上传了,后续有更正会更新这个代码
STM32H743IIT6学习笔记04——移植LetterShell,演示工程源码下载链接
Solidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——随形变化.docxSolidworks学习笔记——...
我收集的设计模式的学习笔记,采用pdf格式,便于收藏和查看
个人网课学习笔记
Javascript高级编程学习笔记27——BOM1window对象1.docx
Spring.NET学习笔记22——整合WCF(应用篇) http://www.cnblogs.com/GoodHelper/archive/2010/05/15/SpringNet_Wcf.html
恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记4——ADC.pdf
python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf python 学习笔记——线性回归预测模型.pdf ...
刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
各个模式都有详细的例子C#学习笔记,打开就知道了
刘冬编写的Spring.NET学习笔记26——整合NVelocity例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_NVelocity.html