定义:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
特点:策略模式提供了管理相关的算法族的办法; 策略模式提供了可以替换继承关系的办法;使用策略模式可以避免使用多重条件转移语句。
应用场景:多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。如上传文件可以上传到腾讯云,或者阿里云,或者七牛云等。
#通过需要不同的日期信息来调用不同的类实现功能。
#策略模式:
#定义一个接口 日期转换
interface Time
{
public function timeString();
}
# 当前的年份
class Year implements Time{
public function timeString(){
echo date('Y',time()).'年';
}
}
# 当前的月份
class Month implements Time{
public function timeString(){
echo date('m',time()).'月';
}
}
# 当前的日期
class Day implements Time{
public function timeString(){
echo date('Y-m-d',time());
}
}
class Times {
private $class;
#根据所需的日期 来选择调用哪个类的方法
public function timess(Time $class){
$this->class = $class;
return $this->class->timeString();
}
}
$Year = new Times();
#查看当前的年份
$Year->timess(new Year());#2022年
#查看当前的月份
$Year->timess(new Month());#07月
#查看当前的日期
$Year->timess(new Day());#2022-07-20
文章评论