本文內(nèi)容演示屬性文件用法的簡(jiǎn)單例子。
首先定義模型接口Model,視圖接口View,以及它們實(shí)現(xiàn)類ImpModel,ImpView.
Model中定義方法getString();View中定義Model實(shí)例為其屬性,在實(shí)現(xiàn)類ImpView中實(shí)現(xiàn)方法
disPlay(),其方法體為Model實(shí)例的getString()方法,并將其打印出來(lái)。
定義屬性文件
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
"
);
????????????
//
產(chǎn)生類實(shí)例對(duì)象
????????????renderer?
=
?(View)?Class.forName(rendererClass).newInstance();
????????????provider?
=
?(Model)?Class.forName(providerClass).newInstance();
????????}?
catch
?(Exception?ex)?{
????????????ex.printStackTrace();
????????}
????}
}
最后編寫測(cè)試方法
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?????????}
綜上,對(duì)屬性文件的加載主要語(yǔ)句
props.load( TestFactory.class.getResource("msf.properties").openStream());
并分別通過(guò)newInstance()產(chǎn)生實(shí)例對(duì)象,本例中使用了設(shè)計(jì)模式中的工廠模式以及單例實(shí)例模式,
因此具有對(duì)設(shè)計(jì)模式進(jìn)一步了解的意義。
注:另一用法
?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?????}
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭(zhēng)朝夕
???? 隱姓埋名/低調(diào)華麗/簡(jiǎn)單生活/完美人生