【类反射】类反射的一个引例(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
- 【类反射】类反射的一个引例(USB)
- 通过反射构造一个类的实例
- 推荐一个快速反射调用的类
- 一个简易的反射类库NMSReflector
- 一个很好用的反射工具类
- 使用反射调用一个类的方法
- 一个简易的反射类库NMSReflector
- 反射的一个例子 笔记本 USB接口 例子
- 反射:Class类、反射概念、类中各成员的反射、反射的应用、数组的反射、框架
- 理解反射(四)类中的成员方法的反射
- NSObject 类的反射,方法反射(十五)
- Java反射(二)利用反射分析类的能力
- Java反射(一):获取类的反射
- Java反射概念及类的反射
- 反射--> 构造方法Constructor类的反射
- 反射 --- 成员变量Field类的反射
- 反射 --- 成员方法Method类的反射
- iOS反射---2.类方法的反射
- 智能指针的简单实现
- python从入门到..........
- android源码内置语音信箱*86
- Node.js 使用 npm 有问题,转cnpm镜像
- python学习2——if语句、elif、if嵌套、while循环、while嵌套
- 【类反射】类反射的一个引例(USB)
- poj 2229 Sumsets
- Robot Framework自动化测试-元素定位之id、name
- 图片的每点击一次旋转90度, filter和css3属性
- SICP 1.11
- POJ3666 Making the Grade(DP,离散化 待整理)
- [CoffeeBot] 配置CoffeeBot的网页服务器
- 小技巧,小知识
- SQL事物与事物隔离级别