JavaWeb開發技巧之裝飾器設計模式

lvxiangan發表於2018-07-13

  假設我們遇到這樣一種情況:在頁面輸出<%= request.getParameter("content")%前,要在過濾器MyFilter要對顯示內容進行敏感詞彙進行過濾處理。那麼問題來了,由於request(即HttpRequest物件)沒有setParameter方法,在只修改MyFilter類、不改動其他程式碼的情況下,如何實現呢?

答案:利用裝飾器模式

先來看看定義:

裝飾器模式(Decorator Pattern)允許向一個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的一個包裝。

這種模式建立了一個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。

熟悉iOS開發的童鞋會問:這跟類別很像啊!沒錯,就是跟類別一個意思,觸類旁通,哈哈……

MyFilter.java:



新建一個MyHttpRequestServlet


解決方法:引入一個request物件,解決介面難實現的問題,同時重寫介面方法:



呼叫:



相關文章