设计模式——过滤器模式
Posted 纳什奈尔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式——过滤器模式相关的知识,希望对你有一定的参考价值。
过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。
以考试成绩为例,一般写法:
List<student> students
student 小明 = {语文:90; 数学:80;}
student 小红 = {语文:55; 数学:77;}
student 小白 = {语文:99; 数学:50;}
students.add(小明);
students.add(小红);
students.add(小白);
List<student> 语文及格的学生;
List<student> 数学及格的学生;
student.foreach(student => {
if(student.语文 >= 60){
语文及格的学生.add(student);
}
if(student.数学 >= 60){
数学及格的学生.add(student);
}
});
//调用
语文及格的学生;//小明,小白
数学及格的学生;//小明,小红
过滤器模式写法:
List<student> students
student 小明 = {语文:90; 数学:80;}
student 小红 = {语文:55; 数学:77;}
student 小白 = {语文:99; 数学:50;}
students.add(小明);
students.add(小红);
students.add(小白);
语文及格:function(students){
List<student> list;
students.foreach(student => {
if(student.语文 >= 60){
list.add(student);
}
return list;
});
}
数学及格:function(students){
List<student> list;
students.foreach(student => {
if(student.数学 >= 60){
list.add(student);
}
return list;
});
}
//调用
语文及格(students);//小明,小白
数学及格(students);//小明,小红
总结:过滤器模式就是把不同过滤条件写成不同的过滤器。
以上是关于设计模式——过滤器模式的主要内容,如果未能解决你的问题,请参考以下文章
[07]Go设计模式:过滤器模式(FilterPattern)
csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us