專案整體結構如下圖所示:
1、database.instance是乙個類庫檔案,idbhelper是乙個介面,封裝的訪問資料庫資料的curd方法,oracledbhelper和sqlserverdbhelper類實現idbhelper介面,分別用來訪問oracle資料庫和sql server資料庫,介面和類的定義如下:
idbhelper介面定義
1oracledbhelper類定義如下using
system;
2using
system.collections.generic;
3using
system.linq;
4using
system.text;
5using
system.threading.tasks;67
namespace
database.instance.inte***ce
831 }
1sqlserverdbhelper類定義如下using
system;
2using
system.collections.generic;
3using
system.linq;
4using
system.text;
5using
system.threading.tasks;
6using
database.instance.inte***ce;78
namespace
database.instance.oracle916
17public
void
update()
1821
22public
void
retrieve()
2326
27public
void
delete()
2831
}32 }
12、myreflection是乙個控制台程式,用來測試using
system;
2using
system.collections.generic;
3using
system.linq;
4using
system.text;
5using
system.threading.tasks;
6using
database.instance.inte***ce;78
namespace
database.instance.sql_server916
17public
void
update()
1821
22public
void
retrieve()
2326
27public
void
delete()
2831
}32 }
一、使用原始方法實現
使用原始的方法實現**如下:
1程式執行結果:using
database.instance.inte***ce;
2using
database.instance.oracle;
3using
system;
4using
system.collections.generic;
5using
system.linq;
6using
system.text;
7using
system.threading.tasks;
8using
system.reflection;
9using
system.configuration;
1011
namespace
myreflection
1227
}28 }
存在的問題:如果換一種資料庫,那麼就需要修改例項化的**,例如更換sql server資料庫,那麼**修改如下:
idbhelper dbhelper = new sqlserverdbhelper();這樣很不方便,每次更換資料庫的時候,都需要修改例項化的**,有沒有什麼方便的方法可以做到不需要修改**就可以實現更換資料庫呢?辦法就是使用反射加配置檔案實現。
二、使用反射加配置檔案實現
配置檔案結構如下:
1program類定義如下:<?xml version="
1.0" encoding="
utf-8
" ?>23
5"database.instance.inte***ce.idbhelper
" value="
database.instance,database.instance.oracle.oracledbhelper
"/>67
8"v4.0
" sku="
.netframework,version=v4.5.1
" />910
1執行結果如下:using
database.instance.inte***ce;
2using
database.instance.oracle;
3using
database.instance.sql_server;
4using
system;
5using
system.collections.generic;
6using
system.linq;
7using
system.text;
8using
system.threading.tasks;
9using
system.reflection;
10using
system.configuration;
1112
namespace
myreflection
1335
}36 }
如果更新資料庫,只需要更新配置檔案中value的值即可,例如要更換sql server資料庫,配置檔案修改如下:
1program類不需要修改,執行結果如下:<?xml version="
1.0" encoding="
utf-8
" ?>23
5"database.instance.inte***ce.idbhelper
" value="
database.instance,database.instance.sql_server.sqlserverdbhelper
"/>67
8"v4.0
" sku="
.netframework,version=v4.5.1
" />910
工廠模式 反射 配置檔案
inte ce fruit public void eat class orange implements fruit 構造工廠類 也就是說以後如果我們在新增其他的例項的時候只需要修改工廠類就行了 class factory if orange equals fruitname return f c...
objective c實現配置檔案 反射
1.先寫plist配置檔案 plist寫到resouce裡面去 通過nsbundle把資料取plist讀出來 2.通過nsclassfromstring建立類 nsclassfromstring nsselectorfromstring 正常來說,id myobj nsclassfromstring...
利用反射讀取xml配置檔案的基本步驟
1.匯入dom4j的jar的包,2.匯入之後,在具體讀取檔案的類裡面進行具體讀取 1 例項化dom4j saxreader reader new saxreader 2 用輸入流進行讀取,得到類.得到類載入器.讀取方法 inputstream in getclass getclassloader g...