一,Adapter适配器模式是将两个不兼容的类组合在一起使用,如下例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace _6.适配器模式
{
//保留现有类所提供的服务,向客户提供接口,以满足客户的期望。
class Program
{
static void Main(string[] args)
{
//正常的接口实现方法
ISpeak ispeak = new Chinese();
ispeak.Say(); //第一种:Adapter适配器模式实现方法
EnglishAdapter enaAdapter = new EnglishAdapter();
enaAdapter.Say(); //第二种:Adapter适配器模式实现方法
ISpeak ispeak2 = new JapanAdapter();
ispeak2.Say();
Console.ReadKey();
}
}
//抽象接口
public interface ISpeak
{
void Say();
} //接口具体实现依赖于抽象接口
public class Chinese : ISpeak
{
public void Say()
{
Console.WriteLine("中文");
}
} //第一种:Adapter适配器模式是将两个不兼容的类组合在一起使用,接口具体实现依赖于抽象接口
public class EnglishAdapter : ISpeak
{
private English english = new English(); public void Say()
{
this.english.SayEnglish();
}
}
public class English
{
public void SayEnglish()
{
Console.WriteLine("英文");
}
} //第二种:Adapter适配器模式中间类继承实现
public class JapanAdapter : Japan, ISpeak
{
public void Say()
{
SayJapan();
}
}
public class Japan
{
public void SayJapan()
{
Console.WriteLine("日文");
}
}
}

综上:

1》适配器模式是通过一个类的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2》适配器模式有两种实现方式:一是继承实现,二是直接在适配器调用需要适配的类接口,从而实现客户端可以调用到需要适配的类接口

适配器的使用场景:

一,当适用一个已存在的类,而它的接口不符合所要求的情况;

二,想要创建一个可以复用的类,该类可以与原接口的类协调工作;

三,如:在当前系统中,我们存在一个公共的酒店接口interface,返回的数据类型格式已经确定,而此时,我们添加新的酒店,并且要实现该接口,但是新酒店的数据格式不一致,这时怎么办?我们就需要用到适配器了,我们通过适配器将数据格式转换成一致,然后就可以实现相同的接口。

C#设计模式:适配器模式(Adapter Pattern)的更多相关文章

  1. 设计模式 - 适配器模式(adapter pattern) 具体解释

    适配器模式(adapter pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 适配器模式(adapter pattern): 将一个类的接 ...

  2. 设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 具体解释

    适配器模式(adapter pattern) 枚举器和迭代器 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考适配器模式(adapter patter ...

  3. C#设计模式——适配器模式(Adapter Pattern)

    一.概述在软件开发中,常常会想要复用一个已经存在的组件,但该组件的接口却与我们的需要不相符,这时我们可以创建一个适配器,在需复用的组件的接口和我们需要的接口间进行转换,从而能够正常的使用需复用的组件. ...

  4. 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)

    原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...

  5. 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)

    怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...

  6. 设计模式系列之适配器模式(Adapter Pattern)——不兼容结构的协调

    模式概述 模式定义 模式结构图 模式伪代码 类适配器,双向适配器,缺省适配器 类适配器 双向适配器 缺省适配器 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 主要优点 主要缺点 适 ...

  7. 二十四种设计模式:适配器模式(Adapter Pattern)

    适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.示例有一个Message实体类 ...

  8. 【设计模式】适配器模式 Adapter Pattern

    适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜.比如手机充电器,笔记本充电器,广播接收器,电视接收器等等.都是适配器. 适配器主要作用是让本来不兼容的两个事物兼容和谐的一起工作.比如 ...

  9. 设计模式(七): 通过转接头来观察"适配器模式"(Adapter Pattern)

    在前面一篇博客中介绍了“命令模式”(Command Pattern),今天博客的主题是“适配器模式”(Adapter Pattern).适配器模式用处还是比较多的,如果你对“适配器模式”理解呢,那么自 ...

  10. 适配器模式(Adapter Pattern)--设计模式

    在生活中,想用苹果充电线给安卓的手机充电时,因为两者的接口不一样,会导致充电口无法进行匹配, 这时候,就需要适配器,将安卓的充电口转化为苹果的接口,这样就可以充电啦.已有的类与新的接口不兼容问题是很普 ...

随机推荐

  1. Python not and or

    刷题时候,有道题目的答案是 return(num and (num % 9 or 9)) 看的有点懵逼,看来解释如下: 1.首先,’and’.’or’.’not’的优先级是not>and> ...

  2. selenium鼠标悬停失效,用js语句模拟

    写脚本时,有很多case需要要用的鼠标悬停出菜单 用到了ActionChains(self.driver).move_to_element(el).perform(),但是脚本写完以后,单个case执 ...

  3. JS基础入门篇( 三 )—使用JS获取页面中某个元素的4种方法以及之间的差别( 一 )

    1.使用JS获取页面中某个元素的4种方法 1.通过id名获取元素 document.getElementById("id名"); 2.通过class名获取元素 document.g ...

  4. python生成HTMl报告(unittest)

      Python3 使用HTMLTestRunner.py 报错ImportError: No module named 'StringIO'处理方法 HTMLTestRunner.py文件是基于Py ...

  5. CSS中的背景用法详解

    background 属性是CSS中用于设置元素背景的属性,最简单的background属 性名,是针对背景若干设定的合并简写,最早的CSS只能使用单一背景图片,而在现在却可以设置多个背景图片.而不用 ...

  6. 解决kubernetes拉取不了镜像仓库的问题

    将镜像仓库地址k8s.gcr.io改成registry.aliyuncs.com/google_containers

  7. sqlserver库相关-表相关-3

    原文: https://www.cnblogs.com/wlx520/p/4684441.html 库相关 建库 --创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在 ...

  8. 笨办法学Python(learn python the hard way)--练习程序21-30

    下面是练习21-30,基于python3 #ex21.py 1 def add(a, b): print("ADDING %d + %d" %(a, b)) return a+b ...

  9. “The creator of this fault did not specify a Reason” Exception

    “The creator of this fault did not specify a Reason” Exception if(!DidItPass) { InvalidRoutingCodeFa ...

  10. windows 命令端口映射

    显示映射列表netsh interface portproxy show all 将本地的1234端口的数据转发至192.168.x.x上的1234端口netsh interface portprox ...