鱼跃于渊
First know how, Second know why !
posts - 0, comments - 1, trackbacks - 0, articles - 49
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
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
1
2
3
4
留言簿
(1)
给我留言
查看公开留言
查看私人留言
文章分类
j2se (5)
javascript相关(16)
平时小练习(3)
精品网摘(16)
网页外观(2)
设计模式(4)
文章档案
2008年12月 (19)
2008年11月 (1)
2008年10月 (2)
2008年9月 (27)
搜索
最新评论
1. re: ajax 做图片幻灯片[未登录]
NICE
--^_^
工厂模式
Posted on 2008-12-20 19:29
鱼跃于渊
阅读(180)
评论(0)
编辑
收藏
所属分类:
设计模式
工厂方法模式和简单工厂模式在结构上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。
下面看例子代码:
此模式涉及到抽象工厂角色(汽车厂),具体工厂角色(具体的汽车车间),抽象产品角色(汽车)以及具体产品角色(私车,公交巴士)。
1
package
com.givetop.Factory;
2
3
4
5
public
class
Factory1
{
6
public
static
void
main(String[] args)
{
7
Car_Factory cf
=
new
Car_Factory();
8
Car car
=
cf.getCar(
"
Benz
"
);
9
car.run();
10
car.stop();
11
System.out.println(
"
------------------------------------------------------------------------
"
);
12
Bus_Factory bf
=
new
Bus_Factory();
13
bf.getCar(
"
Big_Bus
"
).run();
14
bf.getCar(
"
Big_Bus
"
).stop();
15
System.out.println(
"
------------------------------------------------------------------------
"
);
16
bf.getCar(
"
Ford
"
).run();
17
bf.getCar(
"
Ford
"
).stop();
18
}
19
}
20
21
interface
Car
{
22
public
void
run();
23
public
void
stop();
24
}
25
26
interface
Factory
{
27
28
}
29
30
class
Car_Factory
implements
Factory
{
31
public
Car getCar(String type)
{
32
Car c
=
null
;
33
try
{
34
c
=
(Car)Class.forName(
"
com.givetop.Factory.
"
+
type).newInstance();
35
}
catch
(InstantiationException e)
{
36
e.printStackTrace();
37
}
catch
(IllegalAccessException e)
{
38
e.printStackTrace();
39
}
catch
(ClassNotFoundException e)
{
40
e.printStackTrace();
41
}
42
return
c;
43
}
44
}
45
46
class
Bus_Factory
implements
Factory
{
47
public
Car getCar(String type)
{
48
Car c
=
null
;
49
try
{
50
c
=
(Car)Class.forName(
"
com.givetop.Factory.
"
+
type).newInstance();
51
}
catch
(InstantiationException e)
{
52
e.printStackTrace();
53
}
catch
(IllegalAccessException e)
{
54
e.printStackTrace();
55
}
catch
(ClassNotFoundException e)
{
56
e.printStackTrace();
57
}
58
return
c;
59
}
60
}
61
62
class
Ford
implements
Car
{
63
public
void
run()
{
64
System.out.println(
"
Ford开始启动了!
"
);
65
}
66
public
void
stop()
{
67
System.out.println(
"
Ford停止了!
"
);
68
}
69
}
70
71
class
Benz
implements
Car
{
72
public
void
run()
{
73
System.out.println(
"
Benz开始启动了!
"
);
74
}
75
public
void
stop()
{
76
System.out.println(
"
Benz停止了!
"
);
77
}
78
}
79
80
class
Big_Bus
implements
Car
{
81
public
void
run()
{
82
System.out.println(
"
Big_Bus开始启动了!
"
);
83
}
84
public
void
stop()
{
85
System.out.println(
"
Big_Bus停止了!
"
);
86
}
87
}
88
89
class
Mini_Bus
implements
Car
{
90
public
void
run()
{
91
System.out.println(
"
Mini_Bus开始启动了!
"
);
92
}
93
public
void
stop()
{
94
System.out.println(
"
Mini_Bus停止了!
"
);
95
}
96
}
不过我有点纳闷, Bus_Factory也能制造小汽车 , 可见这个还设计的不太完善,我想应该在Car 这个接口里应该分别有小汽车和Bus 的抽象类或接口才对!
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
抽象工厂模式
工厂模式
简单工厂模式
单例模式(SingleTon)
Powered by:
BlogJava
Copyright © 鱼跃于渊