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