c#

位置:IT落伍者 >> c# >> 浏览文章

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


发布日期:2021年05月31日
 
.NET简谈设计模式之(适配器模式)

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

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

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

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

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

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

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

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

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

水厂代码

using System;using SystemCollectionsGeneric;using SystemText;namespace ConsoleApplication{public class 水厂{水厂供水接口 符合接口的水管;//水厂只认识该标准的接口public void 对接(水厂供水接口 接口){ 符合接口的水管 = 接口;}

public void 送水(){符合接口的水管送水(送出吨水);}

}

}

水厂供水接口代码

using System;using SystemCollectionsGeneric;using SystemText;namespace ConsoleApplication{public interface 水厂供水接口{int 水管直径 { get; }

void 送水(string 要送的水);}

}

各地区水桶代码

using System;using SystemCollectionsGeneric;using SystemText;namespace ConsoleApplication{public class 各地区水桶{string 保存水的容器 = stringEmpty;public void 送水来了(string 水){保存水的容器 = 水;ConsoleWriteLine(已经收到水厂送来的 + 水);}

}

}

水桶适配器代码

using System;using SystemCollectionsGeneric;using SystemText;namespace ConsoleApplication{public class 水桶适配器 : 水厂供水接口{各地区水桶 水桶;#region 水厂供水接口 成员public int 水管直径{get { return ; }

}

public void 设置适配对象(各地区水桶 桶){水桶 = 桶;}

public void 送水(string 要送的水){水桶送水来了(要送的水);}

#endregion}

}

模拟调用代码

using System;using SystemCollectionsGeneric;using SystemText;namespace ConsoleApplication{class Program{static void Main(string[] args){水厂 shuichang = new 水厂();各地区水桶 shuitong = new 各地区水桶();水桶适配器 shuitongadapter = new 水桶适配器();shuitongadapter设置适配对象(shuitong);shuichang对接(shuitongadapter);shuichang送水();ConsoleReadLine();}

}

}

               

上一篇:Visual C#中调用Windows服务初探

下一篇:完全解读C#.NET中的正则表达式