工廠模式及在Spring中的應用

2021-10-02 01:25:19 字數 1696 閱讀 3865

工廠模式是最基本的也是最重要的模式,因為它方便我們能寫出高質量、高效率的**。只有掌握了工廠模式,我們才不會重複造輪子。今天將從最簡單的工廠模式開始一步步深入講解,告訴大家自己寫是怎麼用的,框架又是如何實現,我們能從框架實現獲得怎麼樣的靈感。

首先看看工廠模式的類圖:

工廠模式由乙個介面類加乙個對應的工廠類實現的,介面類提供所有要建立出來的實體所需要的方法,工廠類只負責一件事:建立實現類的物件的方法。

先提供出介面類和實現類:

public inte***ce icar
public class audi implements icar 

}

public class benz implements icar 

}

實現類會把類名打出來,我們現在要寫個工廠類負責構造實現類的物件。

public class ******factory1  else if ("benz".equals(carname)) 

return null;

}public static void main(string args)

}

工廠類採用的是根據傳入型別判斷建立哪個實體類,這種方式是實現起來很簡單,有幾種型別就相應的寫多個if...else...分支即可。但這種工廠模式讓人感覺很低能,因為每次需要增加一種型別的車輛,不僅要加相應的實體類,還要修改工廠類,明顯違背了開閉原則。現在提供第二種工廠類:

public class ******factory2  catch (instantiationexception e)  catch (illegalacces***ception e) 

return null;

}public static void main(string args)

第二種工廠類的實現是根據實體類的class的型別來自動生成例項,這種方式極大了提公升了程式的擴充套件性,後續工廠類不需要做任何更改,只要加讓實體類實現icar介面,那麼就能通過工廠類生產出相應的車輛。

現在最熱門的spring框架的ioc就是基於工廠模式,ioc通過di(依賴注入)的方式將bean的建立交給了spring container,spring container 自動幫我們建立物件,我們只需要使用即可。

下面將採用spring提供的一些元件來實現乙個簡單工廠,首先原有的實體類需要做下改造,類上加了@component註解:

@component

public class audi implements icar

}

public class springfactory 

public static void main(string args)

}

spring 這個工廠和前面的兩種實現方式有沒有本質區別呢,必須有,畢竟spring 這麼強大的世界級框架能被成千上萬的企業使用有其道理。前面已經提示了,spring 框架有spring 容器,spring 容器在啟動的時候已經建立了,所有被@component註解標註的實體類都會被掃瞄到放入容器中,下次使用是直接從容器中取出物件,不會再new新的物件。

可見,理解設計模式非常重要,通過設計模式,我們才能更深入的理解各種框架,理解了框架本質和思想,才能利用框架寫出高質量的**。

Spring中的設計模式(一) 工廠模式

場景 以牛奶為例,有蒙牛 伊利 愛慕希等品牌。public inte ce milk 產品實現介面 public class menniu implements milk public class aimuxi implements milk public class yili implements...

在spring中使用工廠模式

bean的建立預設就是框架利用反射new出來的bean例項 工廠模式 工廠幫我們建立bean 有乙個專門幫我們建立物件的類,這個類就是工廠 假設有乙個飛機類airplane,那麼工廠模式中飛機的建立方法就是 airplane ap airplanefactory.getairplane string...

Spring中transaction的應用

spring框架的事務基礎架構 將預設地 只 在丟擲執行時和unchecked exceptions時才標識事務回滾 當出現異常,都可以進行回滾,可以在catch塊中使用下面一行 這種方法是手工進行設定事務回滾 transactionaspectsupport.currenttransactions...