簡體   English   中英

我是否處於分層防泄漏模式? 我該怎么辦?

[英]Am I in tier leakage anti pattern? What should I do?

我被要求向現有系統添加模塊。 在研究結構時,我發現了一些“怪異”的東西。 該系統基於struts1。

在一些jsp中,我發現有一些DAO調用來返回實體對象。 在大多數JSP頁面中,都有一個<app:validate>標記,該標記將調用DAO來檢查訪問權限,並且如果不允許,將重定向到登錄頁面。 有一個accessDA對象,但是它不僅可以進行數據獲取,而且還可以進行一些訪問權限檢查。

我的問題是:

  1. 調出DAO是否會導致層泄漏?
  2. 應用代碼實現是一種好的做法(還是應該在操作類而不是視圖中進行檢查)?
  3. accessDA太胖了嗎?
  4. 我的新模塊應該遵循現有結構嗎?

在典型的MVC用法中,應該有明確的關注點分離 含義,模型,視圖和控制器部分應解耦。 我來回答你的問題

1.喊出DAO是否會導致層泄漏

是。 理想情況下,DAO調用應該在操作/處理程序類中進行。 這樣獲得的數據被放入請求/會話中,以便稍后由視圖呈現層獲取。

2,應用標簽的實現,這是一個好習慣嗎?(還是應該在動作上進行檢查而不是查看)

每次訪問權限檢查都不應有DAO調用。 訪問權限應作為用戶登錄名進行緩存,並應使用上述標記在后續請求中進行檢查。 所以在這里,雖然不是直接違規,但不是一個好習慣。

3.accessDA太胖了嗎?

是。 看起來是這樣。

4.我的新模塊應該遵循現有結構嗎?

作出上述觀察后,我建議不要這樣做。

1)海事組織(IMO)是的,但是: 並不是這樣的泄漏抽象,正是因為它在標簽中。 存在標記以從視圖中抽象實現細節。 也有爭議的是,在操作中進行訪問查找會使操作對僅與視圖層相關的內容負責。

將數據訪問封裝在標簽本身中的另一個問題是,如果頁面上使用標簽的次數很多,則可能需要的數據訪問量過多,從而降低了響應時間。 聰明的標簽可以通過緩存值來減輕這種情況,或者可以在更深層次上實現緩存。

2)像這樣的標記應該對當前用戶對象起作用,該對象應該已經封裝了用戶的權限(可能在登錄時)。 也就是說,如果高速緩存的值可以在用戶會話期間更改,則使用高速緩存的值來確定訪問權限可能還不夠。

3)我不知道; 在不知道更多細節的情況下,IMO無法回答。

4)取決於。 多種方式做同一件事可能導致維護方面的噩夢。

如果要根據最佳實踐重新構建應用程序,那么可以,新開發應遵循更好的模式。 如果沒有的話,IMO會引入多種做同一件事的方式,這會使人更加困惑,並且使追隨者變得更加困難,因為他們隨后需要決定做某事的方式,確定不同事物之間是否存在功能上的差異方式等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM