1、什么是策略模式?
定义:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,并让它们可以相互替换,这种模式就是策略模式。
简单理解就是 有n个做法供你选择,根据你的需要选择某个策略得到结果
2、为什么要用策略模式?
使用设计模式之后,我们的代码冗余和耦合度变低,每个策略模块完成对应的功能。
当然缺点就是一个功能我们就要响应制作一个策略类,但是我们统观MVC架构当中(ThinkPHP,Yii2),一个控制器对应一个视图,其实也是策略设计模式的体现了。
3、实现方式
首先我们要定义一个接口,接口中定义需要实现的方法。
然后分别定义不同的类来实现接口中的方法。
最后在根据用户的不同,分别 new 不同的方法。
/**
* @purpose: 父类接口
* Interface UserInterface
*/
interface UserInterface
{
/**
* @purpose: 展示广告
* @return mixed
*/
public function showAd();
/**
* @purpose: 展示商品分类
* @return mixed
*/
public function showCatetory();
}
/**
* @purpose: 男性用户实现用户接口
* Class MaleUser
*/
class MaleUser implements UserInterface
{
/**
* @purpose: 展示广告
* @return mixed
*/
public function showAd()
{
echo "电子产品";
}
/**
* @purpose: 展示商品分类
* @return mixed
*/
public function showCatetory()
{
echo "电脑数码";
}
}
/**
* @purpose: 女性用户实现用户接口
* Class FemaleUser
*/
class FemaleUser implements UserInterface
{
/**
* @purpose: 展示广告
* @return mixed
*/
public function showAd()
{
echo "化妆品";
}
/**
* @purpose: 展示商品分类
* @return mixed
*/
public function showCatetory()
{
echo "服装分类";
}
}
/**
*@purpose:自定义控制器
* @return mixed
*/
if ($_GET['male']){
$user = new MaleUser();
} else {
$user = new FemaleUser();
}
$user->showAd(); //会根据用户的性别展示各自的广告内容
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/2301_76740365/article/details/130873153