设计模式-过滤器设计模式

  • 什么是过滤器模式

  • 过滤器模式允许通过不同的标准来过滤一个对象。
  • 举个例子

  • 我们开发了一个网站,开放了评论功能,现在我们需要根据不同的评论来过滤出真爱粉或者小黑子。
  • 实体类
public class info {
   public int id;
   /**
    * 评论
    */
   public String content;

}
  • 定义过滤器接口
	public interface ContentFilter {
   public List<info> filter(List<info> l);
}

  • 小黑子过滤器
public class BlackFilterImpl implements ContentFilter{
   private HashSet<String> quoSet;

   public BlackFilterImpl() {
       this.quoSet = new HashSet<>();
       quoSet.add("小黑子素质666");
       quoSet.add("苏珊");
   }

   @Override
   public List<info> filter(List<info> l) {
       ArrayList<info> array = new ArrayList<>();
       for (info info : l) {
           if (quoSet.contains(info.content)){
               array.add(info);
           }
       }
       return array;
   }

}
  • 真爱粉过滤器
public class fansFilterImpl implements ContentFilter{
    private final Set<String> quoSet;

    public fansFilterImpl() {
        this.quoSet = new HashSet<>();
        quoSet.add("哥哥好帅");
        quoSet.add("你们就是嫉妒我家哥哥");
        quoSet.add("批金为王,伴kun远航");
    }

    @Override
    public List<info> filter(List<info> l) {
        List<info> res=new ArrayList<>();
        for (info info : l) {
            if (quoSet.contains(info.content)){
                res.add(info);
            }
        }
        return res;
    }
}
  • 测试

  • 我们只需要创建不同的过滤器就可以过滤出不同的数据了
public static void main(String[] args) {
        List<info> l=new ArrayList<>();
        l.add(new info(1,"小黑子素质666"));

        l.add(new info(2,"苏珊"));
        
        ContentFilter blackFilter = new BlackFilterImpl();

        ContentFilter fansFilter = new fansFilterImpl();
        List<info> filter = blackFilter.filter(l);

        List<info> filter1 = fansFilter.filter(l);
        
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值