设计模式-过滤器模式

在C#中实现一个简单的过滤器模式示例,我们可以创建一个ICriteria接口和一个实现了这个接口的Criteria类。以下是一个简单的示例,它演示了如何使用过滤器模式来过滤一个产品集合。

using System.Collections.Generic;
 
// 定义产品类
public class Product
{
    public string Name { get; set; }
    public double Price { get; set; }
}
 
// 定义过滤条件接口
public interface ICriteria
{
    List<Product> Filter(List<Product> products);
}
 
// 实现具体的过滤条件
public class ProductPriceCriteria : ICriteria
{
    private double _price;
 
    public ProductPriceCriteria(double price)
    {
        _price = price;
    }
 
    public List<Product> Filter(List<Product> products)
    {
        List<Product> filteredProducts = new List<Product>();
        foreach (var product in products)
        {
            if (product.Price <= _price)
            {
                filteredProducts.Add(product);
            }
        }
        return filteredProducts;
    }
}
 
// 使用示例
public class Program
{
    public static void Main(string[] args)
    {
        List<Product> products = new List<Product>
        {
            new Product { Name = "ProductA", Price = 100 },
            new Product { Name = "ProductB", Price = 200 },
            new Product { Name = "ProductC", Price = 150 },
            new Product { Name = "ProductD", Price = 250 }
        };
 
        ICriteria criteria = new ProductPriceCriteria(200);
        List<Product> filteredProducts = criteria.Filter(products);
 
        foreach (var product in filteredProducts)
        {
            System.Console.WriteLine($"Name: {product.Name}, Price: {product.Price}");
        }
    }
}

在这个例子中,我们定义了一个Product类,它有一个名称和价格。接着,我们定义了一个ICriteria接口,这个接口有一个Filter方法,该方法接收一个Product列表并返回一个经过过滤的列表。ProductPriceCriteria类实现了这个接口,并且提供了一个根据价格过滤产品的具体条件。

Main方法中,我们创建了一个产品列表和一个过滤条件实例,然后通过调用Filter方法得到符合条件的产品列表,并打印出这些产品的信息。这个例子展示了如何使用过滤器模式来根据不同的条件对对象集合进行过滤。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值