vue网站开发,工程建设领域专项治理工作网站,厦门网站建设阿里,深圳游戏软件开发公司本文章属于专栏- 概述 - 《设计模式#xff08;极简c版#xff09;》-CSDN博客 本章简要说明过滤器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。
模式说明
方案#xff1a; 过滤器模式是一种结构型设计模式#xff0c;用于过滤一组对象#xff0c;基… 本文章属于专栏- 概述 - 《设计模式极简c版》-CSDN博客 本章简要说明过滤器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。
模式说明
方案 过滤器模式是一种结构型设计模式用于过滤一组对象基于特定条件筛选出所需的对象。
优点
松耦合性 过滤器模式将过滤条件与具体操作解耦使得条件的变化不影响其他部分。可组合性 可以轻松地组合多个过滤器以实现复杂的过滤逻辑。
缺点
类数量增加 可能会引入过多的具体过滤器类增加代码复杂度。
本质思想过滤器模式的本质思想是将过滤条件封装到对象中然后使用这些对象对原始数据进行过滤以获取符合条件的结果集。
实践建议在过滤器很多时。定义一个通用的过滤器接口以便不同类型的过滤器都可以实现该接口。在需要经过多层过滤时多个过滤器组合在一起形成过滤链以实现复杂的过滤需求。这样过滤逻辑集中在一个类中更方便管理和维护。 示例代码
#include iostream
#include vector// 基类 Bird
class Bird {
public:virtual bool filter() const 0;virtual ~Bird() {}
};// 具体类鸟类
class Sparrow : public Bird {
public:bool filter() const override { return true; } // 飞行鸟
};class Penguin : public Bird {
public:bool filter() const override { return false; } // 水中鸟
};// 具体过滤器飞行鸟过滤器
class FlyingBirdFilter {
public:bool filter(const Bird bird) const {return bird.filter();}
};// 过滤器使用示例
int main() {std::vectorBird* birds {new Sparrow(), new Penguin()};FlyingBirdFilter flyingFilter;for (Bird* bird : birds) {if (flyingFilter.filter(*bird)) {std::cout This bird can fly. std::endl;}else {std::cout This bird cant fly. std::endl;}}for (Bird* bird : birds) {delete bird;}/*
输出This bird can fly.This bird cant fly.
*/return 0;
}