现在编译并运行程序,如果没有问题,您将看到以下结果:
图2.1各种移动存储设备的测试结果
好的,看来我们的系统运行良好.
稍后...
一周后,有人发送了一个新的移动存储设备NewMobileStorage,让我测试一下它是否有效. 我微微一笑,以为这不是小菜一碟. 让我们看看面向接口编程的强大功能!修改测试过程,如下所示:
namespace InterfaceExample { class Program { static void Main(string[] args) { Computer computer = new Computer(); IMobileStorage newMobileStorage = new NewMobileStorage(); Console.WriteLine("Now,I am testing the new mobile storage:"); computer.UsbDrive = newMobileStorage; computer.ReadData(); computer.WriteData(); Console.ReadLine(); } } }
编译,运行并查看结果:
哈哈,太神奇了,计算机可以使新设备正常运行而无需进行任何更改. 这被称为“开放扩展,封闭修改”.
图2.2新设备扩展测试结果
再过几天,有人告诉我还有另一台称为SuperStorage的移动设备要连接到我们的计算机面向接口编程,我想来了,无论您是“超级存储”还是“超级存储”,我的“大法,面向界面的编程,将帮助您完成所有工作.
但是,当实际交付设备时,我却傻眼了. 开发此新设备的团队没有获得我们的IMobileStorage接口,因此自然没有遵循该协议. 该设备的读取和写入方法不称为读取和写入,而称为rd和wt. 结束了……它不符合接口,不能插入. 但是,不用担心,我们回到现实中寻找解决方案. 让我们一起考虑一下: 如果您的计算机只有一个USB端口,并且有人带着PS / 2鼠标插入,该怎么办?想一想,有没有所谓的“ PS / 2-USB”转换器?它也称为适配器,可以在不同的接口之间转换. 正确!该程序中还有一个转换器.

在这里,我想介绍一种称为“适配器”的设计模式. 它的作用就像一个实际的适配器,将两个具有不一致接口的插件连接在一起. 由于本文不是关于设计模式的,并且适配器设计模式是易于理解的,所以我不做详细介绍,让我们首先来看一下我设计的类图:
如图所示,尽管SuperStorage没有实现IMobileStorage,但我们定义了一个实现IMobileStorage的SuperStorageAdapter,该IMobileStorage聚合了一个SuperStorage,并将rd和wt适应于SuperStorageAdapter的读写.
图2.3适配器模式的应用原理图
具体代码如下:
namespace InterfaceExample { public class SuperStorageAdapter : IMobileStorage { private SuperStorage _superStorage; public SuperStorage SuperStorage { get { return this._superStorage; } set { this._superStorage = value; } } public void Read() { this._superStorage.rd(); } public void Write() { this._superStorage.wt(); } } }
好的,现在让我们测试适配的新设备,测试代码如下:
namespace InterfaceExample { class Program { static void Main(string[] args) { Computer computer = new Computer(); SuperStorageAdapter superStorageAdapter = new SuperStorageAdapter(); SuperStorage superStorage = new SuperStorage(); superStorageAdapter.SuperStorage = superStorage; Console.WriteLine("Now,I am testing the new super storage with adapter:"); computer.UsbDrive = superStorageAdapter; computer.ReadData(); computer.WriteData(); Console.ReadLine(); } } }
运行后,您将获得以下结果:
图2.4使用适配器模式运行新设备测试结果
好!尽管我们遇到了一些困难,但在设计模式的帮助下面向接口编程,我们无需更改任何计算机代码即可实现新设备的运行.
好的,在第一章中有足够的理论,所以在这里我不再赘述. 我希望大家能结合第一篇文章的理论和本示例来仔细考虑面向接口的问题. 当然,不要忘记结合现实.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-197813-2.html
该出手时必须出手