其實工廠模式真的很簡單,但是實現工廠模式就有很多種方法了,一般來說,現在有了DI框架,完全可以拋棄工廠模式,而且現在JAVA語言又支持一些動態性,比如反射特性,我們完全可以使用反射去生成類的對象。但是,利用反射生成對象之後需要在使用反射的特性去調用方法,還是有些麻煩的。其實我認爲工廠模式在自己的項目中完全可以踢掉而使用DI這類框架,也不要自己動手去用反射完成DI的事情。
我們可以使用這種編程習慣,在自己類中寫一個這樣的方法。
class A{
public A factory(){
return new A();
}
}
我們也可以寫一個簡單的工廠模式。
public class Factory{
public static Sample creator(){
return new SampleA();
}
}
那麼在你的程序中,如果要實例化Sample時.就使用
Sample sampleA=Factory.creator();
這個是個最簡單的工廠,同樣可以使用一些反射特性:
public Object factory(String clss) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
Class cls=Class.forName(clss);
Object ob=cls.newInstance();
return ob;
}
當然,實現的方法多種多樣。
有些時候爲了降低工廠之間的偶合,我們使用一個抽象類或者一個接口,比如用接口降低工廠生成時候的偶合,我們還可以用抽象類,基類實現基本的通用的,可以被高度抽象的方法,子類去實現這些方法,之後在NEW時使用多態性,讓工廠來製造出我們需要的對象。
現在有了DI,我更傾向於DI去解決這種問題。使用DI之後不需要往系統中添加這個模式,畢竟加進來是要成本的,而且還會有BUG。而DI讓工廠做的事情變的更簡單,而且還可以抽象出一個接口出來,對接口做IOC,還是很不錯的設計選擇。