工廠模式其實(shí)是java開發(fā)中最常用的模式之一,我們在獲取數(shù)據(jù)庫連接的時候,經(jīng)常使用工廠模式;
1、結(jié)構(gòu)圖:
計(jì)模式\設(shè)計(jì)模式手冊\DesignPatternMiniHandBook.chm::/FactoryMethod.gif)
2、目的:
定義一個用于創(chuàng)建對象的接口,讓接口子類通過工廠方法決定實(shí)例化哪一個類;
3、適用性:
a) 當(dāng)一個類希望由它的子類來指定它所創(chuàng)建的對象的時候;
b) 當(dāng)一個類不知道自己將創(chuàng)建什么樣的對象類的時候(有多種對象類可以選擇);
c) 當(dāng)類將創(chuàng)建對象的職責(zé)委托給多個幫助子類中的某一個,并且你希望將哪一個幫助子類是代理者這一信息局部化的時候;
4、java實(shí)現(xiàn):
工廠類(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