反射简化switch语句
生活随笔
收集整理的這篇文章主要介紹了
反射简化switch语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 一個簡單工廠類
public class FactoryModule {
public ModuleIntf getModule(String moduleType) {
ModuleIntf module = null;
switch (moduleType) {
case "Db":
module = new ModuleDbImpl();
break;
case "File":
module = new ModuleFileImpl();
break;
default:
// unknown module type
break;
}
return module;
}
}
如果增加一個新的模塊,就需要接著寫case...能不能不動這塊實現擴展呢?能!使用反射。
2. 改寫爲反射類
public class FactoryModule {
public ModuleIntf getModuleByRef(String moduleType) {
try {
return (ModuleIntf) Class.forName("com.design.factory.Module" + moduleType + "Impl").newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
"com.design.factory." 是包路徑
"Module" + moduleType + "Impl"是對象名,例如ModuleDbImpl
后面再增加新的Module類,只需要路徑和命名方式保持一致即可。
總結
以上是生活随笔為你收集整理的反射简化switch语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十三、curator recipes之S
- 下一篇: 1. AtomicInteger 、Un