丄諦啲仇魜ヤ
如 果 敌 人 让 你 生 气 , 那 说 明 你 没 有 胜 他 的 把 握!
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 6,comments - 56,trackbacks - 1
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
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
1
2
3
4
5
6
7
QQ: 315480381
MSN: wangsq777@126.com
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
生活的滋味(3)
随笔档案
2009年4月 (1)
2008年10月 (1)
2008年9月 (1)
2008年8月 (1)
2008年5月 (1)
2008年2月 (1)
文章分类
AJAX(5)
ANT(1)
DIV+CSS
DWR(3)
EXT2.0(6)
FLEX(5)
hibernate(9)
JavaScript和CSS(26)
java反射机制(2)
JAVA基础(12)
JDOM操作XML(1)
JreeChart使用(3)
JSF(5)
Jsp+Struts(18)
lucene-2.0与compass(1)
spring(6)
Tomcat(2)
分页(2)
大杂烩(3)
数据库(16)
模式(2)
算法(1)
文章档案
2009年4月 (8)
2009年3月 (1)
2008年12月 (6)
2008年11月 (6)
2008年9月 (1)
2008年7月 (1)
2008年5月 (13)
2008年4月 (10)
2008年3月 (9)
2008年2月 (1)
2008年1月 (6)
2007年12月 (11)
2007年11月 (9)
2007年10月 (10)
2007年9月 (37)
相册
JAVA
我喜欢的
雪挂
博客
cloudgamer (js)
heimeiyingwang
Fdream's Blog( mootools ,js)
JACK
kekemao1
liaojiyong
macaque1101(oracle)
一个不错的BOLG
小何
小巩子
李少群(jsf)
银河使者
帮助
HTML CSS
JPA 批注参考
天气预报样式 天气预报代码和演示
常用广告代码
颜色代码
看见的好东西
ssh大家庭
Struts和Spring三种整合
浪曦视频在线
用JFreeChart增强JSP报表的用户体验(阿密果)
网站
Appfuse中文论坛
hibernate官方网
itpub技术门户网站
java开源
JAVA解决之道
JS 无忧脚本论坛
PHP社区
spring 参考手册
spring 官方网站
spring中文论坛
满江红
搜索
最新评论
1. re: Spring简介
评论内容较长,点击标题查看
--zuidaima
2. re: 去掉textArea和input的边框[未登录]
根本就不能用
--111111
3. re: DIV生成滚动条
DIV生成滚动条
--DIV生成滚动条
4. re: hibernate分页1
对不上号啊,你的项目不全,我也出现以上错误!!
--婉儿
5. re: EXT2.0 做的登陆界面 [未登录]
写一个简单有效的,不要写些长而没用的。
--jack
阅读排行榜
1. 如何用java程序 将 pdf如何转换成word ???(571)
2. 抵制日货-在北大校园BBS引起轰动的一篇文章(537)
3. 食物(285)
4. 创建一个文件夹(283)
5. 叫你一声老公(275)
评论排行榜
1. 抵制日货-在北大校园BBS引起轰动的一篇文章(5)
2. 食物(1)
3. 呜呜....(1)
4. 创建一个文件夹(0)
5. 叫你一声老公(0)
工厂模式(转)http://www.blogjava.net/deep2/archive/2008/05/21/202052.html
Factory Methord的目的就是在“封装对象的创建”的基础上(simple factory, factory methord, abstract factory的前提都是封装对象的创建),
让子类来决定对象被如何创建
。对比simple factory 是用一个与之assciation的新造的类来专门决定对象该如何被创建.
仍然是用PizzaStore为例:注意下面的PizzaStore中的createPizza()方法是抽象方法,执行过程有子类来决定!而PizzaStore也因此而是抽象类。
通过NYPizzaStore来创建一个NYCheesePizza的时序图如下:
具体代码如下:
1
package
javaapplication18;
2
3
public
class
Main
4
{
5
6
public
static
void
main(String[] args)
7
{
8
PiszzaStore store
=
new
NYPizzaStore();
9
store.createPizza(
"
CheesePizza
"
);
10
store.orderPizza();
11
}
12
}
13
1
package
javaapplication18;
2
3
public
abstract
class
PiszzaStore
4
{
5
6
Pizza mPizza;
7
8
public
PiszzaStore()
9
{
10
}
11
12
public
abstract
Pizza createPizza(String pizzaName);
13
14
public
Pizza orderPizza()
15
{
16
mPizza.prepare();
17
mPizza.bake();
18
mPizza.cut();
19
mPizza.box();
20
return
mPizza;
21
}
22
}
23
24
1
package
javaapplication18;
2
3
public
class
NYPizzaStore
extends
PiszzaStore
4
{
5
6
public
NYPizzaStore()
7
{
8
}
9
10
public
Pizza createPizza(String pizzaName)
11
{
12
if
(pizzaName.equals(
"
CheesePizza
"
))
13
{
14
mPizza
=
new
NYCheesePizza();
15
System.out.println(
"
NY CheesePizza created.
"
);
16
return
mPizza;
17
}
18
else
if
(pizzaName.equals(
"
ClamPizza
"
))
19
{
20
mPizza
=
new
NYClamPizza();
21
System.out.println(
"
NY ClamPizza created.
"
);
22
return
mPizza;
23
}
24
return
null
;
25
}
26
}
27
28
1
package
javaapplication18;
2
3
public
class
Pizza
4
{
5
6
public
Pizza()
7
{
8
}
9
10
public
void
prepare()
11
{
12
System.out.println(
"
pizza prepared
"
);
13
}
14
15
public
void
bake()
16
{
17
System.out.println(
"
pizza baked
"
);
18
}
19
20
public
void
cut()
21
{
22
System.out.println(
"
pizza cut
"
);
23
}
24
25
public
void
box()
26
{
27
System.out.println(
"
pizza boxed
"
);
28
}
29
}
30
31
事实上,所谓的Factory Methord讲白了就是:有些事情,父类故意不干事,让给子类去干。
简化的UML如下:
posted on 2008-05-24 00:41
Crying
阅读(210)
评论(0)
编辑
收藏
所属分类:
模式
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
工厂模式(转)http://www.blogjava.net/deep2/archive/2008/05/21/202052.html
单件模式--singleton