在C++中,Filter設計模式通常使用在處理集合中的元素。它允許我們通過一組條件來篩選出特定的元素,并對這些元素進行操作或處理。
Filter設計模式通常包含以下幾個角色:
class Filter {
public:
virtual bool filter(int value) = 0;
virtual void process(int value) = 0;
};
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;
}
};
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對容器中的元素進行篩選和處理。