• java下载文件功能怎么实现

    java下载文件功能怎么实现
    图标
    豆瓜 图标 · 10-17 · 10浏览
  • js淡入淡出效果详解

    js淡入淡出效果详解
    图标
    豆瓜 图标 · 10-11 · 36浏览
  • javascript的全局函数详解

    javascript的全局函数详解

    javascript的全局函数详解
    图标
    豆瓜 图标· 09-10 · 1012浏览
  • javascript继承方式说明

    javascript继承方式说明
    图标
    豆瓜 图标 · 09-10 · 450浏览
  • js淡入淡出效果实列

    js淡入淡出效果实列
    图标
    豆瓜 图标 · 09-08 · 665浏览
  • Azure底层架构说明

    图标
    豆瓜 图标 · 09-08 · 3016浏览
  • java多线程应用实例详解

    java多线程应用实例详解
    图标
    豆瓜 图标 · 09-07 · 3111浏览
  • js异步编程详解

    js异步编程详解
    图标
    豆瓜 图标 · 09-07 · 2948浏览
  • 系统用例图汇总

    图标
    豆瓜 图标 · 09-07 · 5965浏览
  • 面向接口详解

    图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();        }    }}

      编译、运行、看结果:

      哈哈,神奇吧,Computer一点都不用改动,就可以使新的设备正常运行。这就是所谓“对扩展开放,对修改关闭”。

    图2.2 新设备扩展测试结果

      又过了几天,有人通知我说又有一个叫SuperStorage的移动设备要接到我们的Computer上,我心想来吧,管你是“超级存储”还是“特级存储”,我的“面向接口编程大法”把你们统统搞定。

      但是,当设备真的送来,我傻眼了,开发这个新设备的团队没有拿到我们的IMobileStorage接口,自然也没有遵照这个约定。这个设备的读、写方法不叫Read和Write,而是叫rd和wt,这下完了……不符合接口啊,插不上。但是,不要着急,我们回到现实来找找解决的办法。我们一起想想:如果你的Computer上只有USB接口,而有人拿来一个PS/2的鼠标要插上用,你该怎么办?想起来了吧,是不是有一种叫“PS/2-USB”转换器的东西?也叫适配器,可以进行不同接口的转换。对了!程序中也有转换器。

      这里,我要引入一个设计模式,叫“Adapter”。它的作用就如现实中的适配器一样,把接口不一致的两个插件接合起来。由于本篇不是讲设计模式的,而且Adapter设计模式很好理解,所以我就不细讲了,先来看我设计的类图吧:

      如图所示,虽然SuperStorage没有实现IMobileStorage,但我们定义了一个实现IMobileStorage的SuperStorageAdapter,它聚合了一个SuperStorage,并将rd和wt适配为Read和Write,SuperStorageAdapter

    面向接口详解

    面向接口详解
    图标
    豆瓜 图标· 09-07 · 8757浏览
  • android系统架构图详解

    图标
    豆瓜 图标 · 09-07 · 9789浏览
  • 代码架构角度详解

    图标
    豆瓜 图标 · 09-06 · 3460浏览
  • 消息队列框架说明

    图标
    豆瓜 图标 · 09-06 · 3582浏览
  • 浅谈什么是socket编程

    图标
    豆瓜 图标 · 09-05 · 1.39万浏览
  • jquery入门说明

    jquery入门说明
    图标
    豆瓜 图标 · 09-04 · 122浏览
  • net面试题大全汇总

    net面试题大全汇总
    图标
    豆瓜 图标 · 09-04 · 2486浏览
  • 怎么学习javascript

    图标
    豆瓜 图标 · 09-04 · 7481浏览
  • 对象转json转换方式说明

    对象转json转换方式说明
    图标
    豆瓜 图标 · 08-26 · 991浏览
  • python全局变量详解

    python全局变量详解
    图标
    豆瓜 图标 · 08-26 · 2383浏览
  • npm安装教程详解

    图标
    豆瓜 图标 · 08-07 · 4609浏览
  • jenkins自动部署上线介绍

    图标
    豆瓜 图标 · 08-07 · 4598浏览
  • foreach循环遍历数组

    图标
    豆瓜 图标 · 08-07 · 4799浏览
  • c语言字符

    c语言字符
    图标
    豆瓜 图标 · 08-07 · 1526浏览
  • java枚举类型详解

    java枚举类型详解
    图标
    豆瓜 图标 · 08-07 · 995浏览
  • 分享jmeter接口测试面试题

    图标
    豆瓜 图标 · 08-07 · 7141浏览
  • 共 274 条12345678»
  • 文章

  • 作家

  • 热搜

  • 会员