06-策略模式

经典场景

header("Content-type:text/html;charset=utf-8");
// 做一饭店,策略模式
class FanDian{
  public function fan(){
    return "面条";
  }
  public function cai(){
    return "炒菜";
  }
  public function tang(){
    return "蛋花汤";
  }
}
class SouthDian{
  public function fan(){
    return "大米饭";
  }
  public function cai(){
    return "烧菜+奶油";
  }
  public function tang(){
    return "蛋花汤";
  }
}
class BjDian{
  public function fan(){
    return "大米饭";
  }
  public function cai(){
    return "炒菜";
  }
  public function tang(){
    return null;
  }
}
$fd = new FanDian();
echo $fd->tang();

具体实现

header("Content-type:text/html;charset=utf-8");
// 做一饭店,策略模式
class FD{
  protected $fanCreator = null;
  protected $caiCreator = null;
  protected $tangCreator = null;
  public function __construct($f,$c,$t){
    $this->fanCreator = $f;
    $this->caiCreator = $c;
    $this->tangCreator = $t;
  }
  public function createFan(){
    return $this->fanCreator->fan();
  }
  public function createCai(){
    return $this->caiCreator->cai();
  }
  
  public function createTang(){
    return $this->tangCreator->tang();
  }
}
class NorthCook {
  public function fan(){
    return "面条";
  }
  public function cai(){
    return "炒菜";
  }
  public function tang(){
    return "蛋花汤";
  }
}
class SouthCook {
  public function fan(){
    return "大米饭";
  }
  public function cai(){
    return "烧菜+奶油";
  }
  public function tang(){
    return "海鲜汤";
  }
}
$fd = new FD(new NorthCook(),new NorthCook(),new SouthCook());
echo $fd->createFan() , "<br/>";
echo $fd->createCai()  , "<br/>";
echo $fd->createTang()  , "<br/>";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值