• 设计模式 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] => 张三疯 ) )

  • 相关阅读:
    技嘉H81M-DS2 主板安装 XP方法,及网卡驱动安装
    XCode5无法设置Deployment Target的解决办法
    CALayer的contentsRect
    有道词典for mac不能取词解决方案
    应用沙盒(Application Sandbox)
    模态视图控制对象
    UUID(即GUID)
    UIView的endEditing:方法
    让UITableView进入编辑模式
    presentModalViewController方法,present一个透明的viewController,带动画效果
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/12539194.html
Copyright © 2020-2023  润新知