使用Factory(工廠)模式改善現有軟件設計—對象產生器

其實設計模式就是一個不斷轉移依賴,不斷進行抽象的一個產物,把個部分零散掉,之後在靠一些規則組合在一起,完成一個本應該幾行代碼完成的事情,這樣做必然會帶來一些設計上的複雜,但是各各部分被打散之後偶合更小,一般在一個代碼裏修改代碼,而不用變動其它地方的代碼。
其實工廠模式真的很簡單,但是實現工廠模式就有很多種方法了,一般來說,現在有了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,還是很不錯的設計選擇。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章