【类反射】类反射的一个引例(USB)

来源:互联网 发布:淘宝美工需要什么资质 编辑:程序博客网 时间:2024/05/20 01:46

根据类反射原理演示USB

接口简单原理:

(1)平常如果想要使用USB接口,可以在此USB上插入键盘、鼠标就可以直接使用了。但是想要了解它真正的工作原理是什么样的呢?(2)我们知道,对于接口:它是对外提供一种可以直接使用的方式,而将具体的工作过程封装了起来。(3)类似的,①我们可以造一个接口,②通过工厂方法去调用接口,③在工厂方法中通过配置文件使用具体的实现类。(4)此时,可以得到如图框架,在具体使用的时候可以直接用UsbClient类进行调用。

这里写图片描述

USB接口类:

package cn.hncu.reflect.test.usb;/** * 写一个USB接口,用于工作work:可以让鼠标mouse键盘key进行工作work *  *@author <a"283505495@qq.com">lxd</a> *@version 1.0 2017-4-15 下午1:02:46 *@fileName USB.java */public interface USB {    public abstract void work();}

UsbKeyBoard实现类:

package cn.hncu.reflect.test.usb.impl;import cn.hncu.reflect.test.usb.USB;public class UsbKeyBoard implements USB{    @Override    public void work() {        System.out.println("keyboard is work....");    }}

UsbMouse实现类:

package cn.hncu.reflect.test.usb.impl;import cn.hncu.reflect.test.usb.USB;public class UsbMouse implements USB{    @Override    public void work() {        System.out.println("mouse is working....");    }}

UsbFactory工厂类:

package cn.hncu.reflect.test.usb.factory;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Properties;import cn.hncu.reflect.test.usb.USB;/** * 1、可以通过工厂方法封装来使用接口 *@author <a"283505495@qq.com">lxd</a> *@version 1.0 2017-4-15 下午1:06:28 *@fileName USBFactory.java */public class USBFactory {    private USBFactory(){    }    public static USB getUSB(){        USB usb=null;        try {            Properties p=new Properties();            FileInputStream fin= new FileInputStream("./bin/cn/hncu/reflect/test/usb/factory/usb.config");            /*             * 从输入流中读取属性列表(键和元素对)。             */            p.load(fin);            String name=p.getProperty("name");            Class c=Class.forName(name);            usb=(USB) c.newInstance();        } catch (Exception e) {            e.printStackTrace();        }        return usb;    }}

工厂中的配置文件Usb.config:

#name=cn.hncu.reflect.test.usb.impl.UsbKeyBoardname=cn.hncu.reflect.test.usb.impl.UsbMouse

客户的测试类UsbClient:

package cn.hncu.reflect.test;import cn.hncu.reflect.test.usb.USB;import cn.hncu.reflect.test.usb.factory.USBFactory;public class UsbClient {    public static void main(String[] args) {        USB usb=USBFactory.getUSB();        usb.work();    }}

运行结果:

当在配置文件中选择UsbMouse运行结果输出为:

这里写图片描述

当在配置文件选择UsbKeyBoard运行结果输出为:

这里写图片描述

0 0
原创粉丝点击