MLDN
课程咨询[孔老师]QQ 1031143579孔老师QQ课程咨询留言 课程咨询[徐老师 ]QQ 945313230
徐老师QQ课程咨询留言
课程咨询[刘老师 ]QQ 514543793
刘老师QQ课程咨询留言
java培训
北京java培训
IT电子教育门户 高端JAVA培训 -=> 资源中心 -=> JAVA SE技术专区 -=> JAVA设计模式 -=> 正文

Factory模式的优点

 发布日期:2009-3-9 9:11:00 发布者:[IT电子教育门户]   评论:[]  浏览:

望文生义
  对于构造函数来讲, 其名字必须和所属的类名一致. 这就往往失去了利用函数名传递更多信息的机会. 比如说我们有一个创建XML Parser 类:

1 public class XMLConverter() inmplements Converter {
2
3   //创建一个缺省的 converter, Idoc Converter
4
5   public XMLConverter () {
6
7   …………………………….
8
9   }
10
11   //创建一个指定的 xml parser, idoc/bapi
12
13   public XMLConverter (String xmlConverterType) {
14
15   ………………….
16
17   }
18
19   }
20
21
  这个XMLConverter类有两个构造函数, 第一个构造函数创建一个缺省的XML converter.第二个构造函数可根据程序员的指定来创建一个 XML conveter.为了使用这个类,我们必须先读API文档,并且我们可能很难记住这两个构造函数各自的用途. 我们下面看看如何使用Factory解决这个问题:

1 public class XMLConverter () {
2
3   public Converter getIdocConverter() {
4
5   return new XML();
6
7   }
8
9   public static Converter getBapiConverter() {
10
11   return new XMLConverter ("bapi");
12
13   }
14
15   //创建一个缺省的 converter, Idoc Converter
16
17   private static Converter XMLConverter () {
18
19   …………………………….
20
21   }
22
23   //创建一个指定的 xml parser, idoc/bapi
24
25   private XMLConverter (String xmlParserType) {
26
27   ………………….
28
29   }
30
31   }
32
33
  这个新的XMLConverter类有着两个get函数, 它们返回两个XMLConverter型的Object. 这就是典型的Factory 模式. 这两个get函数的名字清楚地告诉了我们它们各自的用途,我们不必查API文档就能明白它们的用途.请特别注意,两个构造函数都被标明为pivate.

  可控制在一个JVM所能产生某类型Object的个数

  大家知道生成一个数据库的Connection object 是一个非常影响程序速度的操作,所以"连接池'(connection pooling)是一个很常使用的技巧: 程序维持一定数量的Connection object, 以便不断的重用.这样一来就大大减少了产生和销毁Connection object所需的时间.这就要求我们能够控制最多可产生个Connection object. 下面我们看看如和用Factory 模式来解决这个问题:

1   import java.sql.*;
2
3   import java.util.*;
4
5   pulbic class ConnectionPool {
6
7   private static final int NUM_OF_CONNECTION = 50;
8
9   private static int counter = 0;
10
11   private Vector connectionPool = new Vector();
12
13   private ConnectionPool(){
14
15   }
16
17   public static Connection getConnection() throws Exception{
18
19   Connection connection = null;
20
21   if (connectionPool.size() < NUM_OF_CONNECTION) {
22
23   connection = Class.forName("my.sql.Driver").
24
25   getConnection("dbc:oracle:thin:@192.168.100.36:1521:ora9i");
26
27   connectionPool.add(connection);
28
29   } else {
30
31   if(conuter < NUM_OF_CONNECTION)
32
33   counter++;
34
35   else counter = 0;
36
37   connection = (Connection)connectionPool.elementAT(counter%
38
39   NUM_OF_CONNECTION );
40
41   }
42
43   return connection;
44
45   }
46
47   }
48
  上面这一小段程序展示了如何利用Factory 模式保持50个Connection Object:当Connection的数量小于指定数时,我们就不断创建Connection,直到50个Connection Object 被创建。 在这之后,我们就不断的重用这些Object。

  以上笔者通过事例阐述了Factory 模式所具有的而构造函数所不所具有的两个优点,大家可在实践中加以运用。

java视频教程
JAVA核心_75对象序列化练习
 JAVA核心_75对象序列化..
JAVA核心_74对象序列化
 JAVA核心_74对象序列化..
JAVA核心_73字符编码
 JAVA核心_73字符编码 ..
JAVA核心_72Scanner
 JAVA核心_72Scann..
JAVA核心_71 IO练习 二
 JAVA核心_71 IO练习..
相关文章 推荐文章
·暂无
深入浅出单实例Singleton设计模..
Factory模式的优点
反模式可以如何提高编程
State模式在客户端软件中的应用
Flyweight(享元)模式
热门文章
MVC模式和Struts模式的理解
Java中的代理模式
JAVA设计模式之事务处理
使用Java 动态代理实现AOP
用实例学习MVC模式
Java软件架构设计概论
解析MVC模式
Java设计模式之State
怎样成为优秀的软件模型设计者?
Factory模式的优点
今日更新
深入浅出单实例Singleton设计模..
Factory模式的优点
反模式可以如何提高编程
State模式在客户端软件中的应用
Java开发下的设计模式简单说明
Flyweight(享元)模式
软件设计模式在JavaScript中的..
软件设计模式在JavaScript中的..
singleton的几种实现方式
DAO设计模式
JAVA招聘网
 评一评
正在读取…
  姓名:
  评论:
    
【注】 发表评论必需遵守以下条例: !!!
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
关于我们 | 商务合作 | 招聘信息 | 客服中心 | 服务条款 | 免责声明 | 网站导航 QQ留言
Copyright 2009 魔乐培训MLDN.CN all rights reserved 版权所有 京ICP备07008611号