Java设计模式(八)过滤器模式

这篇具有很好参考价值的文章主要介绍了Java设计模式(八)过滤器模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概要

过滤器模式是一种结构型设计模式,它允许通过一系列条件来筛选对象,并提供一种灵活的方式来组合和操作这些条件。过滤器模式将过滤条件封装成独立的过滤器类,然后使用这些过滤器来过滤对象集合,以满足特定的条件。

二、代码

以下是一个示例代码,说明过滤器模式的使用:

//1.表示一个产品
public class Product {
    //产品名称
    private String name;
    //产品类别
    private String category;
    //产品价格
    private double price;

    public Product(String name, String category, double price) {
        this.name = name;
        this.category = category;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public String getCategory() {
        return category;
    }

    public double getPrice() {
        return price;
    }
}
//2.过滤器接口
public interface Filter {
    List<Product> filter(List<Product> products);
}
//3.具体过滤器:按类别过滤
public class CategoryFilter implements Filter {
    private String category;

    public CategoryFilter(String category) {
        this.category = category;
    }

    @Override
    public List<Product> filter(List<Product> products) {
        List<Product> filteredProducts = new ArrayList<>();
        for (Product product : products) {
            if (product.getCategory().equals(category)) {
                filteredProducts.add(product);
            }
        }
        return filteredProducts;
    }
}
//4.具体过滤器:按价格过滤
public class PriceFilter implements Filter{
    private double maxPrice;

    public PriceFilter(double maxPrice) {
        this.maxPrice = maxPrice;
    }

    @Override
    public List<Product> filter(List<Product> products) {
        List<Product> filteredProducts = new ArrayList<>();
        for (Product product : products) {
            if (product.getPrice() <= maxPrice) {
                filteredProducts.add(product);
            }
        }
        return filteredProducts;
    }
}
//5.测试类
public class Test {
    public static void main(String[] args) {
        //创建产品列表
        List<Product> products = new ArrayList<>();
        products.add(new Product("iPhone", "Electronics", 999.99));
        products.add(new Product("iPad", "Electronics", 799.99));
        products.add(new Product("MacBook", "Electronics", 1999.99));
        products.add(new Product("Shirt", "Clothing", 29.99));
        products.add(new Product("Jeans", "Clothing", 49.99));

        //过滤类别
        Filter electronicsFilter = new CategoryFilter("Electronics");
        List<Product> electronicsProducts = electronicsFilter.filter(products);
        System.out.println("Electronics products:");
        for (Product product : electronicsProducts) {
            System.out.println(product.getName());
        }

        //过滤价格
        Filter priceFilter = new PriceFilter(50.0);
        List<Product> cheapProducts = priceFilter.filter(products);
        System.out.println("Cheap products:");
        for (Product product : cheapProducts) {
            System.out.println(product.getName());
        }
    }
}

在上述代码中,我们有一个产品类 Product,它包含了产品的名称、类别和价格。我们使用过滤器模式来过滤产品集合。

Filter 是过滤器接口,定义了过滤器的方法 filter()

CategoryFilterPriceFilter 是具体的过滤器实现类,分别用于按类别和价格进行过滤。它们实现了 Filter 接口,并在 filter() 方法中根据特定的条件进行过滤操作。

在测试代码中,我们创建了一个产品集合,并使用过滤器来筛选出满足特定条件的产品。首先,我们使用 CategoryFilter 过滤器筛选出类别为 “Electronics” 的产品,并打印出它们的名称。然后,我们使用 PriceFilter 过滤器筛选出价格低于等于 50.0 的产品,并打印出它们的名称。

通过过滤器模式,我们可以灵活地组合和使用不同的过滤器来满足不同的筛选需求,而不需要修改原有的产品类。这样可以提高代码的可维护性和可扩展性。文章来源地址https://www.toymoban.com/news/detail-436083.html

到了这里,关于Java设计模式(八)过滤器模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 品味布隆过滤器的设计之美

    布隆过滤器是一个精巧而且经典的数据结构。 你可能没想到: RocketMQ、 Hbase 、Cassandra 、LevelDB 、RocksDB 这些知名项目中都有布隆过滤器的身影。 对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。 我们先来看一个商品

    2023年04月14日
    浏览(29)
  • Java实现布隆过滤器

    背景: 为预防大量黑客故意发起非法的时间查询请求,造成缓存击穿,建议采用布隆过滤器的方法解决。布隆过滤器通过一个很长的二进制向量和一系列随机映射函数(哈希函数)来记录与识别某个数据是否在一个集合中。如果数据不在集合中,能被识别出来,不需要到数据

    2024年02月01日
    浏览(46)
  • [Java]过滤器(Filter)

    一、什么是过滤器 过滤器是Servlet的高级特性之一,是实现Filter接口的Java类! 过滤器的执行流程:   从上面的图我们可以发现,当浏览器发送请求给服务器的时候, 先执行过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。 过滤

    2024年02月11日
    浏览(42)
  • java过滤器(Filter)

    原文链接: java过滤器(Filter – 编程屋 目录 1 过滤器简介 2 Filter详细介绍 3 Filter的用法 3.1 用法1  3.2 用法2 filter也称之为过滤器,它是javaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器) 作用: 既可以对请求进行拦截,也可以对响应进行处理。 常见场景: 权限检

    2024年02月20日
    浏览(40)
  • Java 过滤器 @WebFilter 详解

    @WebFilter 注解是JavaEE中的一种注解,用于标识一个类为过滤器(Filter)。过滤器用于对请求进行过滤和处理,可以在请求到达目标资源之前或之后执行一些操作。 使用**@WebFilter**注解可以将一个类声明为过滤器,并指定过滤器的名称、URL模式、Servlet名称等。 简化配置 :不再需要

    2024年02月03日
    浏览(42)
  • Java-Web过滤器

    1.为什么需要过滤器? 2.基本介绍 3.过滤器的基本原理 1.文件目录 2.环境配置 创建maven项目,导入依赖 3.代码实现 1.login.jsp 2.LoginCheck.java 3.ManagerFilter.java编写过滤规则 4.配置web.xml告诉tomcat 5.admin.jsp 1.服务器启动 读取web.xml 根据全类名反射创建过滤器的实例,将其放在name - 实例

    2024年04月17日
    浏览(38)
  • 【Java 进阶篇】保护你的应用:Java 过滤器实现敏感词汇过滤

    在开发 Web 应用程序时,安全性是至关重要的一环。保护用户免受恶意内容的侵害是开发者义不容辞的责任之一。在这篇博客中,我们将深入研究如何使用 Java 过滤器来过滤敏感词汇,确保用户输入的内容不包含不良信息。我们将采用简单而实用的方法,让即使是初学者也能

    2024年02月03日
    浏览(38)
  • JAVA中的拦截器、过滤器

    相关解释:拦截器依赖于页面有访问controller的操作,且属于SpringMVC体系的动态拦截调用机制,是java中AOP思想的运用。 来看看源码作者的注释: 其中倒数第二段话,描述其类似于过滤器,但其特点只允许使用自定义预处理,不能处理程序本身。此处可体现AOP思想。 过滤器是

    2024年02月13日
    浏览(37)
  • 布隆过滤器及其在Java中的实际应用

    布隆过滤器一直是面试中的重点,本篇文章将深入探讨Java中的布隆过滤器的底层思想,包括它的工作原理、优缺点等。同时,我们将结合一个小实际案例,来给大家展示布隆过滤器在解决实际问题中的应用。 在数据处理领域,我们经常需要判断一个元素是否在一个集合中。

    2024年02月05日
    浏览(44)
  • 【安全】 Java 过滤器 解决存储型xss攻击问题

    跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆,所以简称为XSS。 XSS是一种经常出现在web应用中的计算机安全漏洞 ,也是web中最主流的攻击方式。 XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包