前言
策略模式的应用非常的多,尤其在商城中更是经常会被用到,打个比方,我们生活中经常遇到的优惠,优惠就有很多的策略,
- 满100减50
- 新人折扣7折
- 老板自己要的打0折(不要钱)
还有很多很多这样的场景,为了便于理解(事实证明我还是不适合口头阐述),写了一个策略类,用比较通俗易懂的方式以代码形式表达出来
代码
<?php
//定义一个同学抽象类
abstract class ClassMateStrategy
{
//定义一个行为的方法
abstract public function behavior();
}
//定义一个同学:小明
class XiaoMing extends ClassMateStrategy
{
public function behavior()
{
echo '小明告诉了老师:XX被打了' . PHP_EOL;
}
}
//定义一个同学:张三
class ZhangSan extends ClassMateStrategy
{
public function behavior()
{
echo '张三大吼一声吗个鸡打我同学!(张三加入了打架)' . PHP_EOL;
}
}
//定义一个同学:李梅
class LiMei extends ClassMateStrategy
{
public function behavior()
{
echo '李梅打开一瓶八二年的可乐默默看着' . PHP_EOL;
}
}
//定义一个上下文类
class Content
{
//定义一个变量用来挂载类
public $classMate;
//构造函数传进来一个类
public function __construct($ClassMate)
{
$this->classMate = $ClassMate;
}
public function help()
{
$this->classMate->behavior();
}
}
echo '有一天XXX正在打架!' . PHP_EOL;
//使用小明策略
$xiaoming = new Content(new XiaoMing());
$xiaoming->help();
//使用张三策略
$zhangSan = new Content(new ZhangSan());
$zhangSan->help();
//使用李梅策略
$liMei = new Content(new LiMei());
$liMei->help();
输出
以上的代码会输出
image.png
网友评论