PHP 策略模式


策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
 
封装:  把行为用接口封装起来,我们可以把那些经常变化的部分,从当前的类中单独取出来,用接口进行单独的封装。
互相替换:我们封装好了接口,通过指定不同的接口实现类进行算法的变化, 以适应某些特定的上下文环境。

 
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/8/23
 * Time: 16:22
 */

  interface Shoes
  {

      public function ShoesList();
  }

  class Man implements Shoes
  {

      public function ShoesList()
      {
          echo "man list";
      }
  }

 class  Woman implements Shoes
 {

    public function ShoesList()
    {
        echo "woman list";
    }
 }

 class UserStrategy
 {

     public $strategy;

     public function __construct(Shoes $shoes)
     {
         $this->strategy = $shoes;
     }

     public function ShoesList()
     {
         $this->strategy->ShoesList();
     }
 }

    $sex = 1;

    switch ($sex)
    {
        case 1:

            (new UserStrategy(new Man()))->ShoesList();
            break;
        case 2:

            (new UserStrategy(new Woman()))->ShoesList();
            break;
    }


结果:

D:\myapache\www\demo\guancazhe>php Strategy.php
man list

使用策略模式,使得我们的程序可以根据不同的参数,调取不同的结果。


猜你喜欢

转载自blog.csdn.net/gaoxuaiguoyi/article/details/77508071
今日推荐