设计模式 php语言实践-7 过滤器模式
过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。
以下是一个实现从一个人员列表中检索出名字中带有张字的人员的代码例子
<!DOCTYPE html>
<html lang="zh-CN">
<head>
</head>
<body>
<div class="content">
<div>
<?php
interface Criteria {
public function meetCriteria($personsm);
}
class ZhangCriteria implements Criteria
{
public function meetCriteria($persons){
$arr=array();
for ($i=0; $i <count($persons) ; $i++) {
$person=$persons[$i];
$find = strstr($person->getName(), '张');
if($find!=false)
array_push($arr,$person);
}
return $arr;
}
}
class Person
{
private $_name="";
public function __construct($name)
{
$this->_name = $name;
}
public function getName()
{
return $this->_name;
}
}
$arr = array();
array_push($arr,new Person('张三'));
array_push($arr,new Person('张三丰'));
array_push($arr,new Person('张三疯'));
array_push($arr,new Person('李四'));
$NameZhang=new ZhangCriteria();
print_r($p2);print_r('<br/>');
$ret=$NameZhang->meetCriteria($arr);
print_r($ret);
?>
</div>
</div>
</body>
</html>
输出结果
Array ( [0] => Person Object ( [_name:Person:private] => 张三 ) [1] => Person Object ( [_name:Person:private] => 张三丰 ) [2] => Person Object ( [_name:Person:private] => 张三疯 ) )
本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。

浙公网安备 33010602011771号