定義
過濾器模式(intercepting filter pattern),又稱標準模式(criteria pattern),主要用於統一接收並過濾客戶端的請求,根據過濾器的選擇,將請求傳送給對應的目標處理程式。
過濾器模式屬於物件結構型模式。
要點主要角色:
目標物件(target):處理請求,根據要求執行任務。
過濾器(filter):過濾器在請求處理程式執行請求之前或之後,執行某些任務。
過濾器鏈(filter chain):過濾器鏈帶有多個過濾器,並在 target 之前按照定義的順序執行這些過濾器。
過濾管理器(filter manager):過濾管理器管理過濾器和過濾器鏈。
場景某應用web場景下,乙個客戶的web請求需要經過授權檢查和規範檢查,符合全部條件時才會處理該客戶的請求。
實現target
/**
* 目標類
*/public
class
target
}
filter
/**
* 過濾器介面
*/public
inte***ce
filter
authenticationfilter
/**
* 過濾器實現類a
*/public
class
authenticationfilter
implements
filter
}
specificationfilter
/**
* 過濾器實現類b
*/public
class
specificationfilter
implements
filter
}
filterchain
/**
* 過濾器鏈
*/public
class
filterchain
public
void
addfilter
(filter filter)
public
void
settarget
(target target)
public
void
execute
(string request)
// 目標物件處理請求
target.
processingrequest
(request);}
}
filtermanager
/**
* 過濾器管理
*/public
class
filtermanager
public
void
addfilter
(filter filter)
public
void
filterrequest
(string request)
}
client
public
class
client
private
static
void
sendrequest()
}------
----
----
---輸出--
----
----
----
--授權檢查:【@request:這裡是乙個web請求】
規範檢查:【@request:這裡是乙個web請求】
目標物件處理請求:【@request:這裡是乙個web請求】
原始碼click here 總結
過濾器模式將多個互不耦合的標準組成連線成乙個標準。若不使用過濾器模式,我們如果需要根據不同場景將資料根據不同條件去過濾,那麼我們需要在乙個類中編寫一大串的if-else **,而且不同場景的邏輯**耦合在同乙個類中,不利於**維護,以及**復用。
很多框架用到過濾器模式,如tomcat的filter,druid資料統計的filter
過濾器模式
簡介 這種模式允許開發人員使用不同的標準來過濾一組物件,通過邏輯運算以解耦的方式把它們連線起來。這種型別的設計模式屬於結構型模式,它結合多個標準來獲得單一標準。在本例中,以水果作為過濾的物件。水果的顏色和口味各有差別。有時我們只需要酸味的水果,有時只需要黃色的水果,這種情況下,就需要用到過濾器模式,...
過濾器模式
過濾器模式 用於過濾篩選 1.定義常規類 2.定義抽象介面類,用於過濾的函式接收list,並返回list 3.定義具體過濾類實現抽象介面,重寫過濾用的函式 4.定義用於操作的具體過濾類實現抽象介面,add,or,not 5.客戶端使用抽象介面類,進行具體的過濾操作 1.定義常規類 class dog...
過濾器模式
網上對過濾器的解釋已經很多了,而且這個模式的概念理解起來不算很難,但是發現網上提供的demo 寫得不好,所以這裡就給大家介紹一下如何實現合理的過濾器模式。這樣我們應該怎麼做呢?需要解耦,就需要把比較函式提取出來。經過思考,我們可以讓過濾器類持有乙個委託,這個委託就是用來過濾資料的,我們在建構函式中給...