Java反射机制练习(增强可扩展性)

  模拟电脑的运行,主板运行,对外提供接口PCI,网卡,声卡等设备实现该接口可以完成指定动作,练习中用到的类Mainboard,NetCard,SoundCard,接口PCI

     主板:

 1 package Reflect;
 2 
 3 public class MainBoard {
 4     public void run(){
 5         System.out.println("Mainborad run..");
 6     }
 7     public void usePCI(PCI p){
 8         if(p!=null){
 9             p.open();
10             p.close();
11         }
12     }
13 }

  声卡:

 1 package Reflect;
 2 
 3 public class SoundCard implements PCI {
 4 
 5     @Override
 6     public void open() {
 7         System.out.println("SoundCard Run");
 8     }
 9 
10     @Override
11     public void close() {
12         System.out.println("SoundCard Stop");
13     }
14 
15 }

  网卡:

 1 package Reflect;
 2 
 3 public class NetCard implements PCI{
 4 
 5     @Override
 6     public void open() {
 7         System.out.println("NetCard Run");
 8     }
 9 
10     @Override
11     public void close() {
12         System.out.println("NetCard Stop");
13     }
14 
15     
16 }

  PCI接口:

1 package Reflect;
2 
3 public interface PCI {
4 
5     public void open();
6     public void close();
7 }

  用到的配置文件:

pci1=Reflect.SoundCard
pci2=Reflect.NetCard

  主类:

 1 package Reflect;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.util.Properties;
 6 
 7 public class ReflectTest {
 8 
 9     /**
10      * @param args
11      * @throws IOException
12      * @throws ClassNotFoundException
13      * @throws IllegalAccessException
14      * @throws InstantiationException
15      */
16     public static void main(String[] args) throws IOException,
17             ClassNotFoundException, InstantiationException,
18             IllegalAccessException {
19 
20         MainBoard mB = new MainBoard();
21         mB.run();
22         FileInputStream fis = new FileInputStream("ConfigFile");
23         Properties prop = new Properties();
24         prop.load(fis);
25         for (int x = 0; x < prop.size(); x++) {
26             String classname = prop.getProperty("pci" + (x + 1));
27             Class clazz = Class.forName(classname);
28             PCI p = (PCI) clazz.newInstance();
29             mB.usePCI(p);
30         }
31         fis.close();
32     }
33 
34 }

 


本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/ysw-go/
1、本博客的原创原创文章,都是本人平时学习所做的笔记,如有错误,欢迎指正。
2、如有侵犯您的知识产权和版权问题,请通知本人,本人会即时做出处理文章。
3、本博客的目的是知识交流所用,转载自其它博客或网站,作为自己的参考资料的,感谢这些文章的原创人员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值