一、概要
过滤器模式是一种结构型设计模式,它允许通过一系列条件来筛选对象,并提供一种灵活的方式来组合和操作这些条件。过滤器模式将过滤条件封装成独立的过滤器类,然后使用这些过滤器来过滤对象集合,以满足特定的条件。
二、代码
以下是一个示例代码,说明过滤器模式的使用:
//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()
。
CategoryFilter
和 PriceFilter
是具体的过滤器实现类,分别用于按类别和价格进行过滤。它们实现了 Filter
接口,并在 filter()
方法中根据特定的条件进行过滤操作。
在测试代码中,我们创建了一个产品集合,并使用过滤器来筛选出满足特定条件的产品。首先,我们使用 CategoryFilter
过滤器筛选出类别为 “Electronics” 的产品,并打印出它们的名称。然后,我们使用 PriceFilter
过滤器筛选出价格低于等于 50.0 的产品,并打印出它们的名称。文章来源:https://www.toymoban.com/news/detail-436083.html
通过过滤器模式,我们可以灵活地组合和使用不同的过滤器来满足不同的筛选需求,而不需要修改原有的产品类。这样可以提高代码的可维护性和可扩展性。文章来源地址https://www.toymoban.com/news/detail-436083.html
到了这里,关于Java设计模式(八)过滤器模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!