本文內容演示屬性文件用法的簡單例子。
首先定義模型接口Model,視圖接口View,以及它們實現類ImpModel,ImpView.
Model中定義方法getString();View中定義Model實例為其屬性,在實現類ImpView中實現方法
disPlay(),其方法體為Model實例的getString()方法,并將其打印出來。
定義屬性文件
msf.properties
disPalyer.class
=
ImpView
provider.class
=
ImpModel
編寫工廠類
TestFactory.java
import
?java.util.Properties;
public
?
class
?TestFactory{
????
private
?
static
?TestFactory?instance?
=
?
null
;
????
private
?Properties?props?
=
?
null
;
????
private
?View?disPalyer?
=
?
null
;
????
private
?Model?provider?
=
?
null
;
????
static
?{
????????instance?
=
?
new
?TestFactory();
????}
????
public
?
static
?TestFactory?getInstance()?{
????????
return
?instance;
????}
????
public
?View?getView()?{
????????
return
?disPalyer;
????}
????
public
?Model?getModel()?{
????????
return
?provider;
????}
????
private
?TestFactory()?{
????????props?
=
?
new
?Properties();
????????
try
?{
????????????
//
加載屬性文件
????????????props.load(?TestFactory.
class
.getResource(
"
msf.properties
"
).openStream());?
????????????
//
獲取屬性值
????????????String?rendererClass?
=
?props.getProperty(
"
renderer.class
"
);
????????????String?providerClass?
=
?props.getProperty(
"
provider.class
"
);
????????????
//
產生類實例對象
????????????renderer?
=
?(View)?Class.forName(rendererClass).newInstance();
????????????provider?
=
?(Model)?Class.forName(providerClass).newInstance();
????????}?
catch
?(Exception?ex)?{
????????????ex.printStackTrace();
????????}
????}
}
最后編寫測試方法
1??public?static?void?main(String[]?args)?{
2?????????????View?mr?=?TestFactory.getInstance().getView();
3?????????????Model?mp?=?TestFactory.getInstance().getModel();
4?????????????mr.setModel(mp);
5?????????????mr.disPlay();
6?????????}
綜上,對屬性文件的加載主要語句
props.load( TestFactory.class.getResource("msf.properties").openStream());
并分別通過newInstance()產生實例對象,本例中使用了設計模式中的工廠模式以及單例實例模式,
因此具有對設計模式進一步了解的意義。
注:另一用法
?1?public?static?void?main(String[]?args)?throws?Exception?{
?2?
?3?????????//?get?the?bean?factory
?4?????????BeanFactory?factory?=?getBeanFactory();
?5?
?6?????????View?mr?=?(View)?factory.getBean("view");
?7?????????mr.render();
?8?????}
?9?
10?????private?static?BeanFactory?getBeanFactory()?throws?Exception?{
11?????????//?get?the?bean?factory
12?????????DefaultListableBeanFactory?factory?=?new?DefaultListableBeanFactory();
13?
14?????????//?create?a?definition?reader
15?????????PropertiesBeanDefinitionReader?rdr?=?new?PropertiesBeanDefinitionReader(
16?????????????????factory);
17?
18?????????//?load?the?configuration?options
19?????????Properties?props?=?new?Properties();
20?????????props.load(TestFactory.class.getResource("msf.properties").openStream());
21?
22?????????rdr.registerBeanDefinitions(props);
23?
24?????????return?factory;
25?????}
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調華麗/簡單生活/完美人生