過濾器模式或者說是標準模式是一種設計模式,它允許開發人員使用不同標準去過濾同一組物件,通過邏輯運算,以解耦的方式將它們連線起來。這種型別的設計模式屬於結構型模式,它結合 多個標準來獲取單一標準。
實現
建立乙個 person 物件、criteria 介面和實現了該介面的實體類,來過濾 person 物件的列表。criteriapatterndemo,我們的演示類使用 criteria 物件,基於各種標準和它們的結合來過濾 person 物件的列表。
第一步:建立乙個類,在該類上應用標準
public
class person
public string getname()
public string getgender()
public string getmaritalstatus()
}
第二步:為標準建立乙個介面
public
inte***ce criteria
第三步:建立實現了 criteria 介面的實體類
criteriamale
public
class
criteriamale
implements
criteria
}return malepersons;}}
criteriafemale
public
class
criteriafemale
implements
criteria
}return femalepersons;}}
criteriasingle
public
class
criteriasingle
implements
criteria
}return singlepersons;}}
andcriteria
public
class
andcriteria
implements
criteria
@override
public listmeetcriteria(listpersons)
}
orcriteria
public
class
orcriteria
implements
criteria
@override
public listmeetcriteria(listpersons)
}
return firstcriteriaitems;}}
第四步:使用不同的標準和它們的結合來過濾person物件的列表
public
class
orcriteria
implements
criteria
@override
public listmeetcriteria(listpersons)
}
return firstcriteriaitems;}}
第四步:使用不同的標準和它們的結合來過濾person物件的列表
public
class criteriapatterndemo
public
static
void
printpersons(listpersons)
}
}
第五步:驗證輸出結果
males:
person : [ name : robert, gender : male, marital status : single ]
person : [ name : john, gender : male, marital status : married ]
person : [ name : mike, gender : male, marital status : single ]
person : [ name : bobby, gender : male, marital status : single ]
females:
person : [ name : laura, gender : female, marital status : married ]
person : [ name : diana, gender : female, marital status : single ]
single
males:
person : [ name : robert, gender : male, marital status : single ]
person : [ name : mike, gender : male, marital status : single ]
person : [ name : bobby, gender : male, marital status : single ]
single
orfemales:
person : [ name : robert, gender : male, marital status : single ]
person : [ name : diana, gender : female, marital status : single ]
person : [ name : mike, gender : male, marital status : single ]
person : [ name : bobby, gender : male, marital status : single ]
person : [ name : laura, gender : female, marital status : married ]
從輸出結果來看,根據不同的過濾條件,成功過濾出了males、females、single males、single or females。在這裡,只是先了解一下過濾器模式的思想,在真實場景使用過濾器模式的話,往往要複雜的多。 設計模式之過濾器模式
有時候我們需要在一堆物件的集合裡找到我們需要的物件,這種情況如果比較簡單的過濾,我們可以簡單的用if else去判斷,如果這種過濾是比較具有復用性質的過濾條件,例如在所有使用者裡篩選出成年人,還有就是在增加過濾條件的時候要去加if語句,不是特別的靈活,這個時候可以嘗試用過濾器模式去解決問題。值得一提...
設計模式之 過濾器模式
跳轉到 設計模式彙總 過濾器模式 1 從資料裡面找出想要的某些資料,邏輯相對簡單,也很常見,沒什麼好說的。2 這裡面唯一的一點東西是,得出的資料進行並 或運算.也沒啥,public abstract class vehicle public class car vehicle public clas...
設計模式 攔截過濾器模式
設計模式簡介 設計模式 design pattern 代表了最佳的實踐,通常被有經驗的物件導向的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。設計模式是一套被反覆使用的 多數人知曉的 經過...