0.C#设计模式-简单工厂模式

1.C#设计模式--工厂方法模式

2.C#设计模式--抽象工厂模式

3.C#设计模式--单例模式

4.C#设计模式--建造者模式

5.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#设计模式--设配器模式的更多相关文章

  1. java设计模式6--适配器模式(Adapter )

    本文地址:http://www.cnblogs.com/archimedes/p/java-adapter-pattern.html,转载请注明源地址. 适配器模式(别名:包装器) 将一个类的接口转换 ...

  2. JavaScript设计模式(7)-设配器模式

    适配器模式 1. 作用: 协调两个不同的接口 2. 适用场景 适配器适用于客户期待的接口与现有 API 提供的接口不兼容这种场景.他只能用来协调语法上的差异问题.适配器所适配的两个方法执行的应该是类似 ...

  3. 设计模式8---适配器模式(Adapter)

    1. 适配器模式简介 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用场景: 1.已经存在 ...

  4. C#设计模式--装饰器模式

    0.C#设计模式-简单工厂模式 1.C#设计模式--工厂方法模式 2.C#设计模式--抽象工厂模式 3.C#设计模式--单例模式 4.C#设计模式--建造者模式 5.C#设计模式--原型模式 6.C# ...

  5. C++设计模式——享元模式

    本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...

  6. C++设计模式——工厂方法模式

    本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.» 本文链接:http://www.jellythink.com/arch ...

  7. [JS设计模式]:工厂模式(3)

    简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...

  8. Spring 实现两种设计模式:工厂模式和单态模式(单例模式)

    本文摘自:李刚 著 <轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发> 在Spring 中大量使用的以下两种设计模式:工厂模式和单态模式. 工 ...

  9. 设计模式之工厂模式(c++)

    问题描述 在面向对象系统设计中经常可以遇到以下的两类问题:1)为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口.这样我们可以通过声明 ...

随机推荐

  1. 文本处理三剑客之 sed详解

    1.简介 sed是非交互式的编辑器,它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  2. asp.net mvc中配置路由默认值(Area中)

    public class RouteConfig { ] { "Best.Site.Areas.BestPalace" }; public static void Register ...

  3. Windows 环境搭建Redis集群(win 64位)

    转: http://blog.csdn.net/zsg88/article/details/73715947 参考:https://www.cnblogs.com/tommy-huang/p/6240 ...

  4. Java基础--深克隆补充

    深克隆文章很多,这里推荐Java提高篇--对象克隆(复制). 以上文章条理清晰,一目了然,但最近在项目中碰到的实际问题是,所要克隆的对象是加上子类父类共计207个,无论用上述两种方式的哪一种,都要一一 ...

  5. Java泛型概述

    泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除. 泛型基础 泛型类 我们首先定义 ...

  6. http 断点续传

    一.序 Hi,大家好,我是承香墨影! HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文,而报文又是由报文头(Header)和实体组成.大多数 HTTP 协议的使用 ...

  7. 各大公司Java面试题超详细总结

    ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副 ...

  8. “NHibernate.Cfg.Configuration 的类型初始值设定项引发异常。”的解决方法【备忘】

    今天搞到NHibernate时,突然报了一个“NHibernate.Cfg.Configuration 的类型初始值设定项引发异常.”的异常. 详细异常信息“System.IO.FileLoadExc ...

  9. mysql中json_merge函数的使用?

    需求描述: 通过mysql中的json_merge函数,可以将多个json对象合并成一个对象 操作过程: 1.查看一张包含json列的表 mysql> select * from tab_jso ...

  10. Smallest Difference(暴力全排列)

    Smallest Difference Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10387   Accepted: 2 ...