赞
踩
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
在过滤器模式中,有以下几个关键角色:
(1)过滤器接口(Filter Interface):定义了过滤器的基本方法,通常包括一个用于筛选对象的过滤方法。
(2)具体过滤器(Concrete Filters):实现了过滤器接口,根据特定的标准对对象进行筛选。
(3)目标对象(Target Object):需要被筛选的对象集合。
(4)过滤器管理器(Filter Manager):负责管理和应用过滤器,以便对目标对象进行筛选。
#include <iostream> #include <vector> // 目标对象 class Person { public: std::string name; int age; Person(const std::string& name, int age) : name(name), age(age) {} }; // 过滤器接口 class Filter { public: virtual bool filter(const Person& person) const = 0; }; // 具体过滤器:年龄过滤器 class AgeFilter : public Filter { public: bool filter(const Person& person) const override { return person.age >= 18; // 只筛选年龄大于等于18岁的人 } }; // 过滤器管理器 class FilterManager { private: std::vector<Filter*> filters; public: void addFilter(Filter* filter) { filters.push_back(filter); } std::vector<Person> applyFilters(const std::vector<Person>& people) const { std::vector<Person> filteredPeople; for (const auto& person : people) { bool passAllFilters = true; for (const auto& filter : filters) { if (!filter->filter(person)) { passAllFilters = false; break; } } if (passAllFilters) { filteredPeople.push_back(person); } } return filteredPeople; } }; int main() { // 创建目标对象集合 std::vector<Person> people = { Person("Alice", 25), Person("Bob", 17), Person("Charlie", 30), Person("David", 20) }; // 创建过滤器管理器并添加过滤器 FilterManager filterManager; filterManager.addFilter(new AgeFilter()); // 应用过滤器并输出结果 ![img](https://img-blog.csdnimg.cn/img_convert/6fa5ac44541974782fc765ac5749b9e3.png) ![img](https://img-blog.csdnimg.cn/img_convert/0c7df237344e4137caf9b98df6cbe3f4.png) **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)** 里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。