.NET简谈设计模式之(适配器模式)

简介:

我们继续学习设计模式系列文章

今天我们要学习的是设计模式中的适配器模式,适配器模式其实也比较好理解,光从它的名字我们都能理解个所以然了。

适配器模式定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

上面的这段话可能对初学者来说有点抽象,短短的一段话提到了几个关键的技术点。都是一些基本语法,如果我们还没有掌握这些语法最好还是先去解决前提再来攻克设计模式。

 那到底啥叫适配器模式,这个“适配”很形象、生动的形容了所表达的意思,那么一般用在什么地方呢?怎么来解决一些接口不兼容的情况下的问题。下面我们就来由浅入深的进行理解、学习。[王清培版权所有,转载请给出署名]

[面向对象编程就是对大自然进行虚拟的、抽象的建模。只要我们结合身边的事物,多思考、多想象,很多东西都能迎刃而解。]

我们还是用问题来作引导,这样便于我们自己开动大脑进行自主的学习。在日常生活中我们经常碰见一些无法直接对接的现象,比如自来水管、竹筒、插座等等。这些东西都会由于两头没有一个标准,导致无法直接连接使用。自来水管从地底下通往各个住户家中,但是不可能几十万的住户用很细的水管吧,必须用很粗的水管进行送水。但是到了住户家中不可能用那么粗的水管使用吧。所以从水厂到我们使用水之间是经历很多环节的适配过程,到了住户家中必须用细的水管进行使用,在送水的过程中必须用很大的水管进行送水。

1:

上图中的每一个画红线的地方都是需要适配的地方,在使用的时候必须进行接口的对接才能使用。

我们都有使用插座的习惯,我们的笔记本假如是两眼插座的,但是插线板只有三眼的,怎么办?难道这个就不能用了吗?当然不是,我们需要一个能对接三眼插座的插线板,这样我们就能使用电脑了。请看图:

2:

这两个例子都说明了适配器的作用。我们不能因为接口不同导致两个工具不能使用起来,就好比图1中的水桶和水厂两个对象。其实这两个对象之间只需要用适配器进行对接一下就能成功的使用。我们来看代码怎么实现。

水厂代码:

 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     public class 水厂  
  8.     {  
  9.         水厂供水接口 符合接口的水管;//水厂只认识该标准的接口  
  10.         public void 对接(水厂供水接口 接口)  
  11.         {  
  12.             符合接口的水管 = 接口;  
  13.         }  
  14.         public void 送水()  
  15.         {  
  16.             符合接口的水管.送水("送出10吨水");  
  17.         }  
  18.     }  
  19. }  

水厂供水接口代码:

 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     public interface 水厂供水接口  
  8.     {  
  9.         int 水管直径 { get; }  
  10.         void 送水(string 要送的水);  
  11.     }  
  12. }  

各地区水桶代码:

 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     public class 各地区水桶  
  8.     {  
  9.         string 保存水的容器 = string.Empty;  
  10.         public void 送水来了(string 水)  
  11.         {  
  12.             保存水的容器 = 水;  
  13.             Console.WriteLine("已经收到水厂送来的" + 水);  
  14.         }  
  15.     }  
  16. }  

水桶适配器代码:

 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     public class 水桶适配器 : 水厂供水接口  
  8.     {  
  9.         各地区水桶 水桶;  
  10.         #region 水厂供水接口 成员  
  11.  
  12.         public int 水管直径  
  13.         {  
  14.             get { return 2; }  
  15.         }  
  16.         public void 设置适配对象(各地区水桶 桶)  
  17.         {  
  18.             水桶 = 桶;  
  19.         }  
  20.         public void 送水(string 要送的水)  
  21.         {  
  22.             水桶.送水来了(要送的水);  
  23.         }  
  24.  
  25.         #endregion  
  26.     }  
  27. }  

模拟调用代码:

 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     class Program  
  8.     {  
  9.         static void Main(string[] args)  
  10.         {  
  11.             水厂 shuichang = new 水厂();  
  12.  
  13.             各地区水桶 shuitong = new 各地区水桶();  
  14.  
  15.             水桶适配器 shuitongadapter = new 水桶适配器();  
  16.  
  17.             shuitongadapter.设置适配对象(shuitong);  
  18.  
  19.             shuichang.对接(shuitongadapter);  
  20.  
  21.             shuichang.送水();  
  22.  
  23.  
  24.             Console.ReadLine();  
  25.         }  
  26.     }  
  27. }  


本文转自 王清培 51CTO博客,原文链接:http://blog.51cto.com/wangqingpei557/628781 ,如需转载请自行联系原作者



相关文章
|
14天前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
30 4
|
3月前
|
设计模式 存储 数据库
设计模式之适配器模式
设计模式之适配器模式
|
4月前
|
设计模式 Java
Java设计模式【六】:适配器模式
Java设计模式【六】:适配器模式
15 0
|
1月前
|
设计模式 算法 API
适配器模式:C++设计模式中的瑞士军刀
适配器模式:C++设计模式中的瑞士军刀
46 0
|
1月前
|
设计模式
设计模式之适配器模式
设计模式之适配器模式
|
1月前
|
设计模式 Java 程序员
【设计模式】适配器模式
【设计模式】适配器模式
|
3月前
|
设计模式 程序员
【设计模式】适配器模式
【1月更文挑战第27天】【设计模式】适配器模式
|
3月前
|
设计模式
设计模式-类适配器模式
设计模式-类适配器模式
13 0
|
3月前
|
设计模式 uml
设计模式-适配器模式1
设计模式-适配器模式1
22 0
设计模式-适配器模式1
|
3月前
|
设计模式 uml
设计模式-适配器模式(对象适配器)
设计模式-适配器模式(对象适配器)
19 0