小哈儿的 学习日记
像疯子一样去战斗!
posts - 13, comments - 0, trackbacks - 0, articles - 0
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2007年4月
>
日
一
二
三
四
五
六
25
26
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
常用链接
我的随笔
我的评论
我的参与
留言簿
(2)
给我留言
查看公开留言
查看私人留言
我参与的团队
Dengues工作室(0/0)
随笔分类
Algorithm and Data Structure
c/c++
DB
eclipse(5)
java
java开源框架
JUnit
life(1)
OS
SOA
vs.net
Web开发(1)
XML
考试及认证(2)
面向对象与设计模式(4)
随笔档案
2007年8月 (1)
2007年5月 (2)
2007年4月 (10)
技术网站
developerWorks 中国
eclipse3.2帮助
W3C 教程
搜索
最新评论
阅读排行榜
1. 在rcp中获得父Shell的几种方法(1210)
2. 关于Eclipse首选项的几点问题(1107)
3. 发现了一个好玩的插件PatternBox(444)
4. 面向对象设计(OOD)原则(387)
5. [转]eclipse插件中取得路径的方法(345)
评论排行榜
1. 关于Eclipse首选项的几点问题(0)
2. [转]eclipse插件中取得路径的方法(0)
3. css基础知识(0)
4. 面向对象设计(OOD)原则(0)
5. 设计模式之命令(Command)模式 笔记(0)
网上收集的设计模式资料 全部转贴
Posted on 2007-04-12 03:53
dayue
阅读(223)
评论(0)
编辑
收藏
所属分类:
面向对象与设计模式
设计模式(Design Patterns)笔记之一:Abstract Factory
定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。提供创建对象的接。
工厂模式是我们最常用的模式,是用来创建对象的,它就相当于创建对象的new。
例如我们有一个类Example,我们要创建Example的对象:
Example example
=
new
Example();
或
Example example
=
new
Example(参数);
如果创建Example时做的事情不是如赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那明显的就违背了面向对象的原则.
我们需要将创建实例的责任与使用实例的责任分开, 使得
Example example
=
new
Example(参数);
就是简单的责任:使用Example这个实例;而创建Example的任务就交给了Factory工厂模式.
按照传统方法,我们如果需要继承Example类,生成MyExample,就需要定义Example为Interface,然后,不断继承这个Interface,生成许多子类,造成以后代码维护是如此的困难。
如果,我们开始就采用了工厂模式,也许就没有这么多的烦恼了。
我们生成一个Factory,它专门负责生成Example的实例。
public
class
Factory
{
public
static
Example getIntance()
{
if
(flag
==
1
)
return
new
MyExample();
if
(flag
==
2
)
return
new
YourExample();
}
}
然后,那么在你的程序中,如果要实例化MyExample时.就使用
Example example
=
Factory.getIntance();
//
还有其它标志,不具体写了。
具体使用:
工厂模式有以下三种:
1. 简单工厂(Simple Factory)
2. 工厂方法(Factory Method);
3. 抽象工厂(Abstract Factory)。
我们先看一段代码
public
abstract
class
Factory
{
public
abstract
MyExample creator();
public
abstract
YourExample creator();
}
public
class
FirstFactory
extends
Factory
{
public
MyExample creator()
{
}
public
YourExample creator()
{
}
}
public
class
SecondFactory
extends
Factory
{
public
MyExample creator()
{
}
public
YourExample creator()
{
}
}
这里,我们需要创建多个对象,复杂性提高,于是需要采用Abstract Factory来封装共同属性和方法,而将不同的属性和方法通过子类来实现。
简而言之,工厂模式的目的就是用来实现实例分发。
工厂模式中几种类型的一些差别:
简单工厂模式是根据参数来决定产生实例;
简单工厂模式, 核心是一个实类;
工厂方法模式的核心是一个抽象工厂类;
工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合;
工厂方法一般只创建一个实例,而Abstract Factory创建多个实例。
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
面向对象设计(OOD)原则
设计模式之命令(Command)模式 笔记
设计模式之单例(Singleton) 笔记
网上收集的设计模式资料 全部转贴
Powered by:
BlogJava
Copyright © dayue