您的位置:首页 > 其它

设计模式之 工厂模式

2015-08-14 16:16 309 查看
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package
Reflect;


interface
fruit{

public
abstract
void
eat();

}


class
Apple
implements
fruit{

public
void
eat(){

System.out.println(
"Apple"
);

}

}


class
Orange
implements
fruit{

public
void
eat(){

System.out.println(
"Orange"
);

}

}


class
Factory{

public
static
fruit
getInstance(String ClassName){

fruit f=
null
;

try
{

f=(fruit)Class.forName(ClassName).newInstance();

}
catch
(Exception e) {

e.printStackTrace();

}

return
f;

}

}

class
hello{

public
static
void
main(String[]
a){

fruit f=Factory.getInstance(
"Reflect.Apple"
);

if
(f!=
null
){

f.eat();

}

}

}


现在就算我们添加任意多个子类的时候,工厂类就不需要修改。

2
apple=Reflect.Apple

orange=Reflect.Orange


 然后编写主类代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package
Reflect;


import
java.io.*;

import
java.util.*;


interface
fruit{

public
abstract
void
eat();

}


class
Apple
implements
fruit{

public
void
eat(){

System.out.println(
"Apple"
);

}

}


class
Orange
implements
fruit{

public
void
eat(){

System.out.println(
"Orange"
);

}

}


//操作属性文件类

class
init{

public
static
Properties
getPro()
throws
FileNotFoundException,IOException{

Properties pro=
new
Properties();

File f=
new
File(
"fruit.properties"
);

if
(f.exists()){

pro.load(
new
FileInputStream(f));

}
else
{

pro.setProperty(
"apple"
,
"Reflect.Apple"
);

pro.setProperty(
"orange"
,
"Reflect.Orange"
);

pro.store(
new
FileOutputStream(f),
"FRUIT
CLASS"
);

}

return
pro;

}

}


class
Factory{

public
static
fruit
getInstance(String ClassName){

fruit f=
null
;

try
{

f=(fruit)Class.forName(ClassName).newInstance();

}
catch
(Exception
e) {

e.printStackTrace();

}

return
f;

}

}

class
hello{

public
static
void
main(String[]
a)
throws
FileNotFoundException,IOException{

Properties pro=init.getPro();

fruit f=Factory.getInstance(pro.getProperty(
"apple"
));

if
(f!=
null
){

f.eat();

}

}

}


【运行结果】:Apple
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: