其他分享
首页 > 其他分享> > 「策略模式」带你将营销收益最大化

「策略模式」带你将营销收益最大化

作者:互联网

 前言: 策略模式初学者很少听到,有时候遇到,但是却不清楚是使用该模式实现的功能,我看了一下百度,对这个模式的解释很生硬,其实简单的来说,什么是策略模式呢,比如你去淘宝上买东西,如果你是男生,它的首页会给你推荐男生喜欢的物品,如果你是女生呢,它会给你推荐女生常用的物品,就感觉啊,这个东西是有生命一样,他知道你是什么样的一类人 。还有就是,比如你在朋友圈经常看到官方推送的一些广告  ,如果你是白羊座,他上面就会显示白羊座用这个东西多好多好,如果你是其他星座,就会发现它显示的是其他星座了 。所以这时候用官方的语言概括来说,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于策略模式。这个时候是不是容易理解了很多

目录

一、策略模式的由浅入深 

 二、策略模式的实际应用


一、策略模式的由浅入深 

<?php
/**
 * Class A
 */
class A {
    public function name()
    {
        echo "我是A类";
    }
}

/**
 * Class B
 */
class B {
    public function name()
    {
        echo "我是B类";
    }
}

/**
 * Class strategy
 */
class strategy
{
    /**
     * @var $obj
     */
    private $obj;

    /**
     * @return mixed
     */
    public function getName()
    {
        return $this->obj->name();
    }

    /**
     * @param $class
     */
    public function setClass($class)
    {
        $this->obj = $class;
    }
}

$strategy = new strategy();
//分门别类
$strategy->setClass(new B());
//同一个入口
$strategy->getName();
我是B类

 二、策略模式的实际应用

<?php
/**
 * Interface userStrategy
 */
interface userStrategy
{
    public function hotel();
    public function dinner();
}

/**
 * 尊贵的客人享有的待遇
 * Class rich
 */
class rich implements userStrategy
{
    public function hotel()
    {
        return "你是高贵的客人,为你推荐了高级住宿";
    }

    public function dinner()
    {
        return "你是高贵的客人,为你推荐了烛光晚餐";
    }
}

/**
 * 普通的客人享有的待遇
 * Class poor
 */
class poor implements userStrategy
{
    public function hotel()
    {
        return "你是普通的客人,为你推荐了大众住宿";
    }

    public function dinner()
    {
        return "你是普通的客人,为你推荐了自助餐";
    }
}

/**
 * Class user
 */
class user
{
    private $_userClass;

    public function getHotel() {
        return $this->_userClass->hotel();
    }

    public function getDinner() {
        return $this->_userClass->dinner();
    }

    public function setUserClass(userStrategy $userStrategy) {
        $this->_userClass = $userStrategy;
    }
}

/**
 * 这时候有个autofelix用户过来网站预定房间
 * Class autofelix
 */
class autofelix extends user {}

$people = new autofelix();

//设置群体
$people->setUserClass(new poor());

//获取该群体的住宿和晚餐
$hotel = $people->getHotel();
$dinner = $people->getDinner();

echo json_encode([
    'hotel' => $hotel,
    'dinner' => $dinner
]);
{
    hotel: "你是普通的客人,为你推荐了大众住宿",
    dinner: "你是普通的客人,为你推荐了自助餐"
}

 

标签:最大化,策略,people,autofelix,hotel,营销,模式,dinner
来源: https://blog.csdn.net/weixin_41635750/article/details/113143847