027.3 反射技术 简单应用
2018-10-24 08:46:12来源:博客园 阅读 ()
###NoteBookMain.java package cn.itcast.reflect.test; import java.io.File; import java.io.FileReader; import java.util.Properties; public class NoteBookMain { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { /* * 案例一: * 阶段一:笔记电脑运行。NoteBook run(); * 阶段二:想要使用一些外围设备,比如鼠标,键盘...... * 为了提高了笔记本的扩展性,应该降低这些设备和笔记本的耦合性。 * 需要接口。 * 只需要在设计之初,定义一个接口。而且笔记本在使用这个接口。 * * 后期有了usb的设备后,需要不断的new对象才可以用。每一次都要修改代码。 * * 能不能不修改这代码。就可以使用后期的设备呢? * 设备不明确的,而前期还要对其进行对象的建立。需要反射技术。 * 对外提供一个配置文件。 */ NoteBook book = new NoteBook(); book.run(); // book.useUSB(null); // book.useUSB(new MouseByUSB()); //通过反射的方法重新设计应用程序,以提高更好的扩展性。 File configFile = new File("tempfile\\usb.properties"); if(!configFile.exists()){ configFile.createNewFile(); } //2,读取配置文件。 FileReader fr = new FileReader(configFile); //3,为了获取其中的键值信息方便,建立Properties。 Properties prop = new Properties(); prop.load(fr); for(int x = 1; x<=prop.size()+1; x++){ String className = prop.getProperty("usb"+x); //反射。 Class clazz = Class.forName(className); USB usb = (USB)clazz.newInstance(); book.useUSB(usb); } fr.close(); } }
###NoteBook.java public class NoteBook { /** * 运行 */ public void run(){ System.out.println("notebook run"); } /** * 使用usb的设备。 */ public void useUSB(USB usb){//多态 if(usb!=null){ usb.open(); usb.close(); } } }
###usb.properties
//格式和下面差不多 usb1=reflect.KeyByUSB usb2=reflect.MouseByUSB
###KeyByUSB.java public class KeyByUSB implements USB { @Override public void open() { System.out.println("key open"); } @Override public void close() { System.out.println("key close"); } }
###MouseByUSB.java public class MouseByUSB implements USB { @Override public void open() { System.out.println("mouse open"); } @Override public void close() { System.out.println("mouse close"); } }
###USB.java package cn.itcast.reflect.test; public interface USB { /** * 开启。 * */ void open(); /** * 关闭。 */ void close(); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:maven创建web项目
- Java--反射(框架设计的灵魂)案例 2020-06-11
- Java--反射(框架设计的灵魂) 2020-06-11
- jdk各个版本下载 2020-06-11
- 我被炒鱿鱼了 2020-06-06
- 秒杀系统必须考虑的 3 个技术问题! 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash