ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> JSP技术
设计模式之Factory
定义:提供创建对象的接口.



为何使用?

工厂模式是我们最常用的模式了,著名的Jive论坛系统,就大量使用了工厂模式.



为什么说工厂模式是最常用,因为工厂模式就相当于创建对象的new. 工厂模式就是用来创建对象的.



比如我们有一个类Sample 我们要创建Sample的对象:



Sample sample=new Sample();



如果我们要在创建sample之前做点事情,比如,赋值等,可以使用Sample的构造函数:



Sample sample=new Sample(参数);



如果创建sample时做的事情不是如赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那明显的就违背了面向对象的原则.封装(Encapsulation)和分派(Delegation);



我们需要将创建实例的责任与使用实例的责任分开, 使得语句



Sample sample=new Sample(参数);



就是简单的责任:使用Sample这个实例;至于创建Sample的任务就交给了Factory工厂模式.



还有,如果Sample有个继承如MySample, 按照面向接口编程,我们需要将Sample抽象成一个接口.



现在Sample是接口,有两个子类MySample 和HisSample .我们要实例化他们时,如下:



Sample mysample=new MySample();

Sample hissample=new HisSample();



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



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



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



public class Factory{



  public static Sample creator(){



  ....

  if (which==1)

    return new MySample();

  else if (which==2)

    return new HisSample();



  }



}









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



Sample sample=Factory.creator();



这样,在整个就不涉及到Sample的具体子类,达到封装效果,也就减少错误修改的机会,这个原理可以用很通俗的话来比喻:就是具体事情做得越多,越容易范错误.这每个做过具体工作的人都深有体会,相反,官做得越高,说出的话越抽象越笼统,范错误可能性就越少.好象我们从编程序中也能悟出人生道理?呵呵.



好了,言归正传,既然不可避免使用factory,那我们就认识一下工厂模式.



如何使用?

工厂模式中有: 简单工厂 工厂方法(Factory Method) 抽象工厂(Abstract Factory).





上例中,我们使用的是简单工厂. 这几个模式没有很明显的区别,在我的概念中,简单工厂应该是只有一个工厂方法,如果我们创建对象的方法变得复杂了,我们就可能要将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现:







public abstract class Factory{



  public abstract Sample creator();





  public abstract Sample2 creator();



}



public class SimpleFactory extends Factory{



  public Sample creator(){

    ......

  }



  public Sample2 creator(){

    ......

  }





}



public class BombFactory extends Factory{



  public Sample creator(){

    ......

  }



  public Sample2 creator(){

    ......

  }







}









上例中我们只有一类产品接口 Sample , 工厂方法和抽象工厂可以创建多个产品接口的实例,比如Sample2 Sample3

FactoryMethod往往只是创建单个的实例。Abstract Factory创建一系列的实例组,这些实例彼此相关。



举例1



下图是抽象工厂图:





在这张图中, 有两类产品接口interface RAM 和interface CPU; 同时有两个创建方法:MacProducer和PCProducer,这两个创建方法中都有createCPU()和createRAM(),返回的实例对象组是CPU和RAM, 这是分别来自两类产品接口,表面彼此是相关的.因此它是抽象工厂.



举例2



我们以Jive的ForumFactory为例:



public abstract class ForumFactory {



  private static Object initLock = new Object();

  private static String className = "com.jivesoftware.forum.database.DbForumFactory";

  private static ForumFactory factory = null;



  public static ForumFactory getInstance(Authorization authorization) {

    //If no valid authorization passed in, return null.

    if (authorization == null) {

      return null;

    }

    //以下使用了Singleton 单态模式

    if (factory == nul
 
 
本站关键词:
|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站||常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|长安网站建设网页制作|石龙网站建设网页制作|东坑网站建设网页制作|东莞专业网络公司|东莞速达软件|东莞财务软件|东莞ERP软件|东莞电脑维护|做网站|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有