码迷,mamicode.com
首页 > 其他好文 > 详细

面向接口编程 随笔

时间:2015-06-30 14:26:21      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

     今日在网上看到一篇有关面向接口编程的博客,初看不太理解,故自己一边测试一边理解。总结如下:

     测试用例:开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第

三方的移动存储设备,所以计算机必须有扩展性,能与目前未知而以后可能会出现的存储设备进行数据交换。

 第一种:面向类编程

      1、定义一个U盘,FlashDisk.java 类,实现读写两个方法。

package com;

public class FlashDisk {
    public void Read() {
        System.out.println("FlashDisk Read");
    }

    public void Write() {
        System.out.println("FlashDisk Write");
    }
}

 

      2、定义一个电脑 ,Computer.java 类,定义一个RWData方法,调取U盘的读写  

package com;

public class Computer {   
    public void RWData() {
        FlashDisk flashDisk = new FlashDisk(); //启动U盘
        flashDisk.Read();
        flashDisk.Write();
    }
}

 

      3、测试,test.java类

package com;

public class test {
    public static void main(String[] args) {
        Computer computer = new Computer(); // 启动电脑
        computer.RWData(); //调用 处理U盘的方法
    }
}

      总结:通过这种最基本的方法实现,当再添加一个进行对MP3的读写时,需要对Computer类再添加对MP3的读写,用在实际生活中,就得把电脑拆开重新改造,缺乏可扩展性。

 第二种:面向接口编程

      1、定义一个接口,IMobile.java类,定义读、写方法。(接口的目的是为了同一标准,让所有的电器都按这个标准创建,实现统一管理,可参考现实中USB接口的实现原理)

package com;

public interface IMobile {

    public void Read();

    public void Write();
}

      2、改造U盘,FlashDisk.java 类,使其实现IMobile 接口

package com;

public class FlashDisk implements IMobile{
    public void Read() {
        System.out.println("FlashDisk Read");
    }

    public void Write() {
        System.out.println("FlashDisk Write");
    }
}

     3、改造电脑,Computer.java类,通过其对接口的操作,操作所有基于该接口开发的电器 

package com;

public class Computer {

    private IMobile usbDrive; // 在电脑中安装USB插槽

    public IMobile getUsbDrive() {
        return usbDrive;
    }

    public void setUsbDrive(IMobile usbDrive) {
        this.usbDrive = usbDrive; // 启动插槽,初始化插入该USB的设备
    }

    // 电脑为使用者 提供统一的读、写操作
    public void RWData() {
        usbDrive.Read(); // 调用插入该USB的设备的读写方法,
        usbDrive.Write();
    }

}

 4、修改测试,test.java类

package com;

public class test {
    public static void main(String[] args) {
        Computer computer = new Computer(); // 启动电脑
        IMobile flashDisk = new FlashDisk(); // 拿出U盘
        computer.setUsbDrive(flashDisk); // 把U盘插入USB插槽,电脑开始初始化U盘
        computer.RWData();
    }
}

      面向接口编程的结构已基本成型,电脑已经可以针对U盘进行读写了,此时,如果要添加对MP3的读写,只需要再定义一个MP3的类,使其实现公共接口。

       1、定义一个MP3,MP3Player类,使其实现IMobile 接口

package com;

public class MP3Player implements IMobile {

    @Override
    public void Read() {
        System.out.println("MP3Player Read");
    }

    @Override
    public void Write() {
        System.out.println("MP3Player Write");
    }

}

      2、为电脑添加对MP3操作已完成,修改测试,test.java类

package com;

public class test {
    public static void main(String[] args) {
        Computer computer = new Computer(); // 启动电脑
        
        IMobile flashDisk = new FlashDisk(); // 拿出U盘
        computer.setUsbDrive(flashDisk); // 把U盘插入USB插槽,电脑开始初始化U盘
        computer.RWData();
        
        IMobile mP3Player=new MP3Player();// 拿出MP3
        computer.setUsbDrive(mP3Player); // 把MP3插入USB插槽,电脑开始初始化U盘
        computer.RWData();
    }
}

 

面向接口编程 随笔

标签:

原文地址:http://www.cnblogs.com/sky-/p/4610079.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!