当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 设计模式之Factory 板桥里人 http://www.jdon.com 2002/10/07 定义:提供创建对象的接口. 为何使用?工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。
 

 

 ·java工具,你用了吗?    »显示摘要«
    摘要:译者语 今天是一特殊日子,本人特推出一小篇译文,希望大家喜欢! 本文列出了bruce eckel所推荐的各种java工具,不知道你用了吗? 正文 非常荣幸,我在这里向大家探讨关于最好的java工具的话题。它们已被全部罗列在下面了。每个工具都是从他人的建议以及我的切身体会中提炼出来的。 ide:eclipse (www.eclipse.org) 它拥有杰出的性能(在各个方面),并且还是免费的。免费并不总是重点,但是对于一个id......
    摘要:目录: 介绍 绑定xml文档到treeview 控件 过滤xml 数据 执行拖放操作 执行删除,改名,插入操作 使用中的treeview 控件 通过xml 和xpath 你可以毫不费力的为你的treeview控件增加拖放甚至更多的功能-by alex hildyard 最近,我一直在开发一个用来维护在线目录的用户界面工具,因为这个目录包含太多的产品,所以用一些方法对他们分类是很有意义的。目录管理员将需要有删除和定义新......


设计模式之Factory
设计模式之factory

定义:提供创建对象的接口. 【相关文章:Bill Gates写的程序(1981)

板桥里人 http://www.jdon.com 2002/10/07 【扩展阅读:D3dFvf顶点格式的C++描述(vc.

【扩展信息:在网页中控制wmplayer播放器

为何使用?

工厂模式是我们最常用的模式了,著名的jive论坛 ,就大量使用了工厂模式,工厂模式在java程序系统可以说是随处可见。

为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类class生成实例对象,如a a=new a() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性与尽量少的修改量。

我们以类sample为例, 如果我们要创建sample的实例对象:

sample sample=new sample();

可是,实际情况是,通常我们都要在创建sample实例时做点初始化的工作,比如赋值 查询数据库等。

首先,我们想到的是,可以使用sample的构造函数,这样生成实例就写成:

sample sample=new sample(参数);

但是,如果创建sample实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那你的代码很难看了(就需要refactor重整)。

为什么说代码很难看,初学者可能没有这种感觉,我们分析如下,初始化工作如果是很长一段代码,说明要做的工作很多,将很多工作装入一个方法中,相当于将很多鸡蛋放在一个篮子里,是很危险的,这也是有背于java面向对象的原则,面向对象的封装(encapsulation)与分派(delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段与段之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情。

在本例中,首先,我们需要将创建实例的工作与使用实例的工作分开, 也就是说,让创建实例所需要的大量初始化工作从sample的构造函数中分离出去。

这时我们就需要factory工厂模式来生成对象了,不能再用上面简单new sample(参数)。还有,如果sample有个继承如mysample, 按照面向接口编程,我们需要将sample抽象成一个接口.现在sample是接口,有两个子类mysample 与hissample .我们要实例化他们时,如下:

sample mysample=new mysample();

sample hissample=new hissample();

随着项目的深入,sample可能还会"生出很多儿子出来", 那么我们要对这些儿子一个个实例化,更糟糕的是,可能还要对以前的代码进行修改:加入后来生出儿子的实例.这在传统程序中是无法避免的.

但如果你一开始就有意识使用了工厂模式,这些麻烦就没有了.

工厂方法

你会建立一个专门生产sample实例的工厂:

public class factory{

  public static sample creator(int which){

  //getclass 产生sample 一般可使用动态类装载装入类。

  if (which==1)

    return new samplea();

  else if (which==2)

    return new sampleb();

  }

}

那么在你的程序中,如果要实例化sample时.就使用


...   下一页
    摘要:执行托放操作 定义了treeview 显示得内容以后,现在你应该准备处理如何四处移动元素了,大多数得开发人员在处理拖放操作时得通用观念都是很相似得,无论使用visual c++ visual basic 或者任何一种.net 语言,所以我一直用下面的四个方法处理这个操作: mousedown-----用户选择得内容 dragenter---用户开始拖动选中得项目 dragover ---用户拖动选中得项目经过另一个项目 dragdrop---用户......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE