手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

策略模式(感谢mpeg提供代码)

首页 > PHP >
PHP代码
  1. <?php   
  2. interface IStrategy {   
  3.   function filter( $record );   
  4. }   
  5. class FindAfterStrategy implements IStrategy {   
  6.   private $_name;   
  7.   
  8.   public function __construct( $name )  {   
  9.     $this->_name = $name;   
  10.   }   
  11.   
  12.   public function filter( $record )  {   
  13.     return strcmp$this->_name, $record ) <= 0;   
  14.   }   
  15. }   
  16. class RandomStrategy implements IStrategy {   
  17.   
  18.   public function filter( $record )  {   
  19.     return rand( 0, 1 ) >= 0.5;   
  20.   }   
  21. }   
  22. class UserList {   
  23.   private $_list = array();   
  24.   
  25.   public function __construct( $names )  {   
  26.   
  27.     if ( $names != null ) {   
  28.       foreach$names as $name ) {   
  29.         $this->_list []= $name;   
  30.       }   
  31.     }   
  32.   }   
  33.   public function add( $name )  {   
  34.     $this->_list []= $name;   
  35.   }   
  36.   public function find( $filter ) {   
  37.     $recs = array();   
  38.     foreach$this->_list as $user ) {   
  39.       if ( $filter->filter( $user ) )   
  40.         $recs []= $user;   
  41.     }   
  42.     return $recs;   
  43.   }   
  44. }   
  45. $ul = new UserList( array"Andzy""Jack""Lori""Megan" ) );   
  46. $f1 = $ul->find( new FindAfterStrategy( "J" ) );   
  47. print_r( $f1 );   
  48. $f2 = $ul->find( new RandomStrategy() );   
  49. print_r( $f2 );   
  50. ?>  

mpeg的网站是:www.phpubb.com




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: 模式

« 上一篇 | 下一篇 »

只显示10条记录相关文章

发表评论

评论内容 (必填):