憨厚生

----Java's Slave----
***Java's Host***

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  165 随笔 :: 17 文章 :: 90 评论 :: 0 Trackbacks

工厂模式其实是java开发中最常用的模式之一,我们在获取数据库连接的时候,经常使用工厂模式;

1、结构图:

2、目的:

定义一个用于创建对象的接口,让接口子类通过工厂方法决定实例化哪一个类;
3、适用性:
a) 当一个类希望由它的子类来指定它所创建的对象的时候;
b) 当一个类不知道自己将创建什么样的对象类的时候(有多种对象类可以选择);
c) 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候;
4、java实现:

工厂类(Factory.java):
public class Factory {
    public Window CreateWindow (String type) {
      Class cls = null;
      Window win = null;
      try{
        cls = Class.forName(type);
        win =(Window)cls.newInstance();
      }catch(Exception ex)
      {
        ex.printStackTrace();
      }
      return win;
    }

    public static void main(String[] args) {
        Factory myFactory = new Factory();
        Window myBigWindow = myFactory.CreateWindow("WindowBig");
        myBigWindow.func();

        Window mySmallWindow = myFactory.CreateWindow("WindowSmall");
        mySmallWindow.func();
    }
}
----------------
window接口(Window.java)
public abstract class Window {
    public abstract void func();
}
----------------
两个子类中的第一个WindowBig.java:
public class WindowBig extends Window {
    public void func() {
        System.out.println("This is Big Window !");
    }
}
两个子类中的第二个WindowSmall.java:
public class WindowSmall extends Window {
    public void func() {
        System.out.println("This is Small Window !");
    }
}



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=271432


[收藏到我的网摘]   赵小刀发表于 2005年01月28日 10:08:00
posted on 2007-01-04 09:17 二胡 阅读(156) 评论(2)  编辑  收藏

评论

# re: 转 设计模式整理(二) 之 工厂模式 2007-01-04 14:47 二胡
在xuyongfeng的专栏中看到如下内容,感觉不错!就转贴过来了!
简单工厂:把创建对象的工作封装到一个类的方法中去。
工厂方法:在抽象类中定义创建对象的接口,创建对象的具体工作推迟到子类
中去。
抽象工厂:在抽象类中提供一组创建一系列相关或相互依赖对象的接口。
抽象工厂是由多个工厂方法组成的。
抽象工厂创建一组对象,而工厂方法只是创建一个对象。
工厂方法通常还和template设计模式一起使用。


  回复  更多评论
  

# re: 转 设计模式整理(二) 之 工厂模式 2007-01-04 14:53 二胡
工厂模式有三种 分别为: 简单工厂,工厂方法,抽象工厂

1:简单工厂
一个具体的全能类。负责产生所有的子类,根据传的参数进行比较,产生相对应的子类。
2:工厂方法
一个抽象的类或是接口。他只定义了方法并没有实现。具体由继承或是实现的子类来完成
3:抽象工厂
也是一个抽象的类。与工厂方法并没有多大的区别。关键在于创建对象的复杂程度。
转贴于蒋德的JAVA专栏

  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: