/*
- 实例:
- 人使用电脑
- 使用鼠标
- 使用键盘
*/
public class Demo {
public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
NoteBook noteBook = new NoteBook();
noteBook.run();
// Mouse mouse = new Mouse();
// Keyboard keyboard = new Keyboard();
//
//
// noteBook.useMouse(mouse);
// noteBook.useMouse(keyboard);
//
// YinXiang yinXiang = new YinXiang();
// noteBook.useMouse(yinXiang);
//实现功能:在不改变Demo代码的前提下,给电脑新增UPan的功能
// * 总结:通过反射可以在不改变功能类(Demo测试类)的前提下,实现新增功能的添加,我们只需要创建对应的工具类(UPan,Mouse等).
// * 再通过一个配置文件进行简单的配置即可.
/pp.load(new FileReader(“D:/Java/Java/java01/hadoop/qf/config.properties”));
pp.put(“usb3”, “FanShe.UPan”);
pp.store(new FileWriter(“D:/Java/Java/java01/hadoop/qf/config.properties”), “hello”);/
//读取Properties文件
Properties properties = new Properties();
FileReader fileReader = new FileReader("D:\\workspace\\BigData1924N13\\config.properties");
properties.load(fileReader);
//properties.size() 键值对的个数
for (int i = 0; i < properties.size(); i++) {
//找key
String key = "usb"+i;
String value = (String)properties.get(key);
//反射
Class<?> cla = Class.forName(value);
USB usb = (USB)cla.newInstance();
noteBook.useMouse(usb);
}
}
}
public class Keyboard implements USB {
@Override
public void open() {
System.out.println("使用键盘");
public class Mouse implements USB {
@Override
public void open() {
System.out.println("使用鼠标");
}
@Override
public void close() {
System.out.println("结束使用鼠标");
}
}
}
@Override
public void close() {
System.out.println("结束使用键盘");
}
}
public class NoteBook {
public void run() {
System.out.println(“运行笔记本”);
}
public void useMouse(USB usb) {//多态
usb.open();
usb.close();
}
// public void useKeyboard(Keyboard keyboard) {
// keyboard.open();
// keyboard.close();
// }
}
public class UPan implements USB {
@Override
public void open() {
System.out.println("插入UPan");
}
@Override
public void close() {
System.out.println("拔出UPan");
}
}
public interface USB {
public void open();
public void close();
}
public class YinXiang implements USB {
@Override
public void open() {
System.out.println("使用音响");
}
@Override
public void close() {
System.out.println("关闭音响");
}
}