設計模式 過濾器模式(C 實現)

2021-09-24 20:47:22 字數 1870 閱讀 1482

允許開發人員使用不同的標準來過濾一組物件,通過邏輯運算以解耦的方式把它們連線起來。屬於結構型模式,它結合多個標準來獲得單一標準。

需要在乙個集合中按照一定的條件和規則篩選出子集合,可以用過濾器模式。

採用菜鳥教程的例子,這裡用c++實現

#include#include#include#includeusing namespace std;

//建立乙個person類,在該類上應用標準。

class person

person(const person &pson)

~person() {}

string getname()

string getgender()

string getmaritalstatus()

bool operator==(const person &t1)

;void criteria::printpersons(vector&persons)

}//建立實現了criteria介面的實體類。

class criteriamale :criteria

~criteriamale() {}

vectormeetcriteria(vector&persons);

};vectorcriteriamale::meetcriteria(vector&persons)

}return malepersons;

}//建立實現了criteria介面的實體類。

class criteriafemale :criteria

~criteriafemale() {}

vectormeetcriteria(vector&persons);

};vectorcriteriafemale::meetcriteria(vector&persons)

}return femalepersons;

}//建立實現了criteria介面的實體類。

class criteriasingle :criteria

~criteriasingle() {}

vectormeetcriteria(vector&persons);

}; vectorcriteriasingle::meetcriteria(vector&persons)

}return singlepersons;

}//建立實現了criteria介面的實體類。

class andcriteria :criteria

~andcriteria() {}

vectormeetcriteria(vector&persons);

private:

criteria *crit1;

criteria *crit2;

}; vectorandcriteria::meetcriteria(vector&persons)

//建立實現了criteria介面的實體類。

class orcriteria :criteria

~orcriteria() {}

vectormeetcriteria(vector&persons);

private:

criteria *crit1;

criteria *crit2;

};vectororcriteria::meetcriteria(vector&persons)

}if (!flag)

}return firstpersons;

}int main()

在visual studio 2015上執行結果:

設計模式之過濾器模式

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

設計模式之 過濾器模式

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

設計模式 攔截過濾器模式

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