阅读量:0
在C++中,Filter设计模式通常使用在处理集合中的元素。它允许我们通过一组条件来筛选出特定的元素,并对这些元素进行操作或处理。
Filter设计模式通常包含以下几个角色:
- Filter接口:定义了筛选器的通用接口,包括筛选方法和处理方法。
class Filter { public: virtual bool filter(int value) = 0; virtual void process(int value) = 0; };
- 具体的Filter类:实现了Filter接口,并根据具体的条件来筛选和处理元素。
class PositiveFilter : public Filter { public: bool filter(int value) override { return value > 0; } void process(int value) override { std::cout << "Processing positive value: " << value << std::endl; } };
- 容器类:包含了需要进行筛选的元素集合,并提供了应用Filter的方法。
class Container { private: std::vector<int> values; public: void addValue(int value) { values.push_back(value); } void applyFilter(Filter* filter) { for (int value : values) { if (filter->filter(value)) { filter->process(value); } } } };
使用Filter设计模式的示例:
Container container; container.addValue(5); container.addValue(-2); container.addValue(10); PositiveFilter positiveFilter; container.applyFilter(&positiveFilter);
在上面的示例中,PositiveFilter类用于筛选出大于0的元素,并对这些元素进行处理。通过Container类的applyFilter方法,可以应用PositiveFilter对容器中的元素进行筛选和处理。