您现在的位置是:网站首页>文章内容文章内容
设计模式--策略模式
李鹏2023-02-14【PHP】1036人已围观
策略模式是一种行为型模式,它将对象和行为分开,将行为定义为一个行为接口和具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。本模式使得算法可独立于使用它的用户而变化,它的本质是分离算法,选择实现。
策略模式的特点:具体算法从具体业务处理中独立,策略算法是形同行为的不同实现(多态),客户端选择上下文来具体实现策略算法
使用场景:同一个算法,有很多不同的实现情况,根据不同个体情况选择具体行为的实现。
优点:避免让客户端涉及到重要算法和数据,避免使用难以维护的多重条件选择语句,易扩展
缺点:判断逻辑在客户端,需求改变时,要更改客户端的程序。客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。只适合扁平的算法结构。
策略模式代码示例:
<?php
abstract class GoHomeMethod{
abstract public function ActionGoHome(string $user);
}
class FlyGoHome extends GoHomeMethod{
public function ActionGoHome(string $user)
{
echo $user."坐飞机回家";
}
}
class CarGoHome extends GoHomeMethod{
public function ActionGoHome(string $user)
{
echo $user."自驾回家";
}
}
class GoHome{
private $method;
function __construct($method)
{
$this->method = $method;
}
public function actionGo(string $user)
{
$this->method->ActionGoHome($user);
}
}
$obj1 = new GoHome(new CarGoHome);
$obj1->actionGo('张三');//张三自驾回家
echo "<br/>";
$obj1 = new GoHome(new FlyGoHome);
$obj1->actionGo('李四');//李四坐飞机回家
?>
0