C#设计模式--设配器模式
设计模式:
适配器模式(Adapter Pattern)
简单介绍:
适配器模式(Adapter Pattern)将一个类的接口转换成客户希望的另外一个接口,比如说用户希望将普通家用的220V电压转换成5V给手机充电,那么就需要一个转换设备,手机充电头和充电线,就是这个道理!似乎笔记本电脑的电源线就叫电源适配器,这里的适配器大概就是这个思想
原型模式参与者:
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
需要适配的类(Adaptee):需要适配的类或适配者类。
适配器(Adapter):通过包装一个需要适配的对象,将Target这个用户期待的接口转换成用户需要的Adaptee
适配器模式类图:

适配器模式c#代码示例:
Target 目标类
/// <summary>
/// 目标类
/// </summary>
public class Target
{
public virtual void TargetPrint()
{
Console.WriteLine("My name is Target!");
}
}
Adaptee类 受改造的类
/// <summary>
/// 受改造的类
/// </summary>
public class Adaptee
{
public void AdapteePrint()
{
Console.WriteLine("My name is Adaptee.");
}
}
Adapter 适配器类
/// <summary>
/// 适配器
/// </summary>
public class Adapter : Target
{
private Adaptee adaptee = new Adaptee();
public override void TargetPrint()
{
adaptee.AdapteePrint();
}
}
用户测试类
class Client
{
static void Main(string[] args)
{
Target target = new Adapter();
target.TargetPrint();
Console.Read();
}
}
运行结果:

适配器模式C#源码工程文件下载
适配器模式实际生活举例
举例说明:
假设将普通用户的标准电压220V转换成手机充电的标准电压5V(这里仅仅是举例子,如果有不恰当,还望多多包涵)
目标接口(Target):普通用户标准电压类--->UserStandardVoltage.cs
需要适配的类(Adaptee):手机用户充电电压类-->MobileChargingVoltage.cs
适配器(Adapter):适配器类-->PowerAdapter.cs
类图参考

适配器模式成C#代码生活例子举例说明:
serStandardVoltage类 普通用户家用标准电压220V
/// <summary>
/// 用户标准电压
/// </summary>
public class UserStandardVoltage
{
public virtual void printVoltage()
{
Console.WriteLine("我是用户标准电压220V!");
}
}
MobileChargingVoltage普通用户手机充电标准电压5V
public class MobileChargingVoltage
{
public void printVoltage()
{
Console.WriteLine("我是手机标准充电电压5V");
}
}
PowerAdapter电源适配器类 将用户标准电压220V转换为手机充电标准电压5V
/// <summary>
/// 电源适配器类
/// </summary>
public class PowerAdapter:UserStandardVoltage
{
private MobileChargingVoltage mobileChargingVoltage = new MobileChargingVoltage();
public override void printVoltage()
{
mobileChargingVoltage.printVoltage();
}
}
用户测试类:用户使用使用居民标准电压220V的接口,利用适配器既可以得到5V电压标准的接口
class Client
{
static void Main(string[] args)
{
UserStandardVoltage userStandardVoltage = new PowerAdapter();
userStandardVoltage.printVoltage();
Console.Read();
}
}
运行结果

适配器模式C#源码工程文件下载手机电源适配器实例
C#设计模式--设配器模式的更多相关文章
- java设计模式6--适配器模式(Adapter )
本文地址:http://www.cnblogs.com/archimedes/p/java-adapter-pattern.html,转载请注明源地址. 适配器模式(别名:包装器) 将一个类的接口转换 ...
- JavaScript设计模式(7)-设配器模式
适配器模式 1. 作用: 协调两个不同的接口 2. 适用场景 适配器适用于客户期待的接口与现有 API 提供的接口不兼容这种场景.他只能用来协调语法上的差异问题.适配器所适配的两个方法执行的应该是类似 ...
- 设计模式8---适配器模式(Adapter)
1. 适配器模式简介 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用场景: 1.已经存在 ...
- C#设计模式--装饰器模式
0.C#设计模式-简单工厂模式 1.C#设计模式--工厂方法模式 2.C#设计模式--抽象工厂模式 3.C#设计模式--单例模式 4.C#设计模式--建造者模式 5.C#设计模式--原型模式 6.C# ...
- C++设计模式——享元模式
本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...
- C++设计模式——工厂方法模式
本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.» 本文链接:http://www.jellythink.com/arch ...
- [JS设计模式]:工厂模式(3)
简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...
- Spring 实现两种设计模式:工厂模式和单态模式(单例模式)
本文摘自:李刚 著 <轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发> 在Spring 中大量使用的以下两种设计模式:工厂模式和单态模式. 工 ...
- 设计模式之工厂模式(c++)
问题描述 在面向对象系统设计中经常可以遇到以下的两类问题:1)为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口.这样我们可以通过声明 ...
随机推荐
- (资源)Git优秀学习资源
在线教程 Try Git: Git初学者绝不能错过的Git上手资源. 廖雪峰Git教程: 比较系统的中文在线教程 易百Git教程 : 另一个比较全的中文在线教程 Git Immersion : A V ...
- iOS:获取 NSDate 的年
NSDate *currentDate = [NSDate date]; NSCalendar* calendar = [NSCalendar currentCalendar]; NSDateComp ...
- Business vs Technology
Business 只是 Technology的子集. Business只是体现在Code中. 比如说是HTML页面中内容的一部分. 或者说业务是对HTML组成的内容的分类. 比如说Smallbusin ...
- js 历史
原文http://javascript.ruanyifeng.com/introduction/history.html JavaScript的诞生 JavaScript 因为互联网而生,紧随着浏览器 ...
- Linux服务器安装svn
云安装 yum install subversion 配置 1.配置仓库 [root@localhost /]# cd /home [root@localhost home]# mkdir svn [ ...
- 【python】logging
https://docs.python.org/3/howto/logging.html import logging # create logger logger = logging.getLogg ...
- 修改vs2005,vs2008,vs2010调试默认浏览器
前些日子不小心安装上了一个sogou的浏览器,感觉这个浏览器用起来也算方便,所以就么有卸载,一直就这么用着,但当我用vs来调试web程序的 时候问题出来了,默认的调试浏览器变成了搜狗的浏览器了,我在v ...
- IT部门的“2/8”现状
专家的研究和大量企业实践表明,在IT项目的生命周期中,大约80%的时间与IT项目运 营维护有关,而该阶段的投资仅占整个IT投资的20%,形成了典型的“技术高消费”.“轻服务.重技术”现象.Gartne ...
- sql2008,sa不能使用:不能为主体 sa 中设置凭据
打开属性对话框,为 SQL Server Administrator 帐户,然后您执行了"sa"登录使用 SQL Server Management Studio 工具.您修改为在 ...
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
目录 背景 测试 环境 工具 说明 结果 结论 xstream简单教程 准备 代码 protobuf简单教程 快速入门 下载.exe编译器 编写.proto文件 利用编译器编译.proto文件生成ja ...