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

1. 前言

过滤器模式是个比较特殊的模式,它没有很复杂的结构,作为一个模式来说它太简单了,简单到只有一个输入和一个输出,可以认为是个不标准的纯函数(因为输入的数组引入了外部干扰的可能)。

  1. 使用场景:当需要将过滤逻辑和业务代码解耦的时候
  2. 优点:可复用,解耦过滤逻辑。

2. 代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>过滤器模式</title>
</head>
<body>
    
</body>
<script>
    const persons = [];
    class Person{
        constructor(name,gender){
            this.name = name;
            this.gender = gender;
        }
    }

    class CriteriaMale{
        static meetCriteria(persons){
            if(!persons||persons.length === 0){
                return [];
            }
            let response = [];
            persons.forEach(element => {
                if(element.gender === "woman"){
                    response.push(element);
                }
            });
            return response;
        }
    }

    let request = [];
    request.push(new Person("m1","man"));
    request.push(new Person("m2","woman"));
    request.push(new Person("m3","man"));
    let response = CriteriaMale.meetCriteria(request);
    console.log(response);
    /**
	[Person]0: Person {name: "m2", gender: "woman"}length: 1__proto__: Array(0)
	**/
</script>
</html>

3. 后记

好吧,这个模式实在是太简单了,需要注意的点就是:js由于没有接口所以过滤器的接口统一请用文档来做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值