为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第6天--大话PHP设计模式第七章节策略模式

标签:
PHP

课程名称:大话PHP设计模式

课程章节: 7-1策略模式简介 7-2策略模式的实现和使用 7-3策略模式的控制反转
课程链接

主讲老师:Rango

课程内容:

首先开头简单介绍了下策略模式的概念,然后用代码演示了策略模式的实现和使用,实现了代码的解耦

课程收获:

1、策略模式简介

策略模式

将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式

实际应用举例

假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告

策略模式其他用途

使用策略模式可以实Ioc,依赖倒置、控制反转

2、策略模式的实现和使用


interface UserStrategy
{
    function showAd();
    function showCategory();
}


class FemaleUserStrategy implements UserStrategy
{
    function showAd()
    {
        echo "2022新款女装";
    }

    function showCategory()
    {
        echo "女装";
    }
}


class MaleUserStrategy implements UserStrategy
{
    function showAd()
    {
        echo "iPhone 14";
    }

    function showCategory()
    {
        echo "电子产品";
    }
}

class Page
{
    protected $strategy;

    function index()
    {
        echo "AD:";
        $this->strategy->showAd();
        echo "<br />";

        echo "Category:";
        $this->strategy->showCategory();
        echo "<br />";
    }

    function setStrategy(UserStrategy $strategy)
    {
        $this->strategy = $strategy;
    }
}

$page = new Page;

if(isset($__GET['female'])){
    $strategy = new FemaleUserStrategy;
} else {
    $strategy = new MaleUserStrategy;
}

$page->setStrategy($strategy);
$page->index();

3、策略模式的控制反转

依赖倒置原则(Dependence Inversion Principle, DIP),是一种软件设计思想。传统软件设计中,上层代码依赖于下层代码,当下层出现变动时, 上层代码也要相应变化,维护成本较高。而DIP的核心思想是上层定义接口,下层实现这个接口, 从而使得下层依赖于上层,降低耦合度,提高整个系统的弹性。这是一种经实践证明的有效策略。

代码实现


class EmailSenderByQq
{
    public function send()
    {
    }
}

class User
{
    private $_emailSenderObject;

    public function __construct($emailSenderObject)
    {
        $this->_emailSenderObject = $emailSenderObject;
    }
    public function register()
    {
        // other code
        
        $this->_emailSenderObject->send();
    }
}

$emailSenderObject = new EmailSenderByQq;
$user = new User($emailSenderObject);
$user->register();

4、课程截图

图片描述
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消