java設計模式之過濾器模式

2021-07-30 01:21:39 字數 1695 閱讀 5863

一、過濾器模式簡介

過濾器模式(filter pattern)或標準模式(criteria pattern)是一種設計模式,這種模式允許開發人員使用不同的標準來過濾一組物件,通過邏輯運算以解耦的方式把它們連線起來。這種型別的設計模式屬於結構型模式,它結合多個標準來獲得單一標準。

二、示例演示

1、業務需求

假設person類有三個屬性:姓名(name)、性別(gender)和婚姻情況(marital),我們的系統中的一些功能需要對這些屬性進行過濾篩選,比如:

1)得到所有的男性;

2)得到所有的女性;

3)得到所有還單身的人;

4)得到所有已婚的人。

系統還希望能夠將這些條件組合起來進行過濾篩選,比如:

1)得到所有已婚男性;

2)得到所有單身女性;

3)得到所有已婚的人或女性;

2、定義person類

public class person   

public string getname()

public void setname(string name)

public string getgender()

public void setgender(string gender)

public string getmarital()

public void setmarital(string marital)

@override

public string tostring()

}

3、定義過濾器介面以及具體的實現

過濾器介面:

public inte***ce filter
查詢所有男性的實現類:

public class malefilter implements filter   

} return result;

} }

查詢所有女性的實現類femalefilter

查詢所有單身人士的實現類singlefilter

查詢所有已婚人士的實現類marriedfilter

上述三個類的實現原理與malefilter實現原理相同,這裡不做表述。

處理「and」邏輯的過濾器類filterand類中的**:

public class filterand implements filter   

@override

public listfilter(listpersons)

}

處理「or」邏輯的過濾器類filteror類中的**:

public class filteror implements filter   

@override

public listfilter(listpersons)

} return tmplist1;

} }

4、編寫測試**:

public class test   

// 列印列表中的資料資訊

private static void printlist(listlist)

} }

設計模式之過濾器模式

有時候我們需要在一堆物件的集合裡找到我們需要的物件,這種情況如果比較簡單的過濾,我們可以簡單的用if else去判斷,如果這種過濾是比較具有復用性質的過濾條件,例如在所有使用者裡篩選出成年人,還有就是在增加過濾條件的時候要去加if語句,不是特別的靈活,這個時候可以嘗試用過濾器模式去解決問題。值得一提...

設計模式之 過濾器模式

跳轉到 設計模式彙總 過濾器模式 1 從資料裡面找出想要的某些資料,邏輯相對簡單,也很常見,沒什麼好說的。2 這裡面唯一的一點東西是,得出的資料進行並 或運算.也沒啥,public abstract class vehicle public class car vehicle public clas...

設計模式之 過濾器模式

這種模式允許開發人員使用不同的標準來過濾一組物件,通過邏輯運算以解耦的方式把它們連線起來。這種型別的設計模式屬於結構型模式,它結合多個標準來獲得單一標準。舉例 場景 中國移動有很多營銷活動,而參加這些營銷活動的物件是有要求的,有的需要判斷在網時長,有的需要有最低 要求等。實現 制定不同的規則來對一組...