歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 設計模式在項目中的應用

設計模式在項目中的應用

日期:2017/3/1 9:27:37   编辑:Linux編程

簡單工廠設計模式在項目中應用

項目使用場景:根據不同的廠家,有不同的報表打印形式,而對於報表的打印他們有公共的部分,打印報表頭、打印底部、和打印中間部分。

我們可以使用簡單工廠模式,抽象出打印報表的接口,不同的廠家實現不同的打印接口。

單例模式在項目中應用

場景1:在DOM讀取配置文件的時候,因為經常被用到這個類,我們可以設置一個全局類,不用每次都new那麼多的類,節省資源消耗。

場景2:在spring的IOC依賴注入的時候,默認的是采用單例模式,例如controller層中一個類通過注入方式使用service層的一個類,而service這個類是全局變量,spring就是通過單例模式來實現的,當然我們可以通過配置spring的springMVC.xml文件來修改(prototype)。

單例模式作用:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

如下圖所示:

/**
* @ClassName: Singleton_Simple
* @Description: 單例模式——餓漢模式
* @author summer
* @date 2015-7-14
*
*/
public class Singleton_Simple {

private static final Singleton_Simple simple = new Singleton_Simple();

private Singleton_Simple(){}

public static Singleton_Simple getInstance(){
return simple;
}

}

當然對於讀取配置文件這個類我們可以作為靜態類來寫,那為什麼還要使用單例模式呢?spring工廠中創建的bean為singleton模式和prototype格式,為什麼沒有使用靜態類的形式?或者可以選擇非靜態類的靜態方法?

1、靜態類是在JVM加載的時候就占用內存的,而單例模式,可以在使用的時候再進行加載。也就是單例可以延遲初始化。

2、單例可以繼承類,可以實現接口,而靜態類不能。

3、單例類可以被集成,他的方法可以被覆寫。

4、單例類可以被用來多台。

5、而針對非靜態類的靜態方法,如果一個類不需要擴展的話可以用這樣的方式,用單例也可以,但是需要擴展的類,最好是使用單例。

代理模式在項目中的應用

應用場景:spring AOP的核心就是代理,通過代理模式的實現來實現解耦。

代理模式(proxy):為其他對象提供一種代理以控制對這個對象的訪問。

JDK代理模式如下所示:

外觀模式在項目中的應用

應用場景:在界面和業務邏輯層中抽取出一層,controller層調用facade層,facade層調用service層。

外觀模式(facade):為子系統中一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

Copyright © Linux教程網 All Rights Reserved