菜鳥學設計模式 過濾器模式

2021-08-08 11:36:05 字數 3295 閱讀 3424

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

實現

建立乙個 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 代表了最佳的實踐,通常被有經驗的物件導向的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。設計模式是一套被反覆使用的 多數人知曉的 經過...