促销模块

电商的促销模块,抽象出来。有两个,规则和行为。

比如,后台发布一个促销活动,满足一定的条件,执行相对应的行为。

比如,买A赠B

1规则

买A

if(买A==true){

}

2 行为

赠B

if(买A==true){
    execute('赠B')
}

促销活动Promote 有一个Rule,满足了Rule后,去执行相应的行为Action

有一些促销活动没必要拆分RuleAction,比如满100减30或者打8折活动,因为是作用于整单的没有其它条件。对于购A赠B来说,是满足某一特殊条件,条件和行为是必须分离的。

因此对于Rule来说自己本身可有Action

3 Rule和Action什么时候分离

  • 有一般条件的 RuleAction 不分离

  • 有特殊条件的 RuleAction 分离

写了一个包

Installing

$ composer require jc91715/promote -vvv

Usage

<?php

require_once('./vendor/autoload.php');

use Jc91715\Promote\PromoteManage;
use Jc91715\Promote\Promote\AbstractPromote;
use Jc91715\Promote\Rule\abstractRule;
use Jc91715\Promote\Action\ActionInterface;

class Promote extends AbstractPromote
{

}

class Rule extends abstractRule
{

    public function across()
    {
        echo "通过规则,购A\n";
        return true;
    }

}

class Rule1 extends abstractRule
{
    public function across()
    {
        echo "通过规则,打八折\n";
        return true;
    }

    public function execute()
    {
        echo "执行行为,订单打八折\n";
    }
}
class Action implements ActionInterface
{
    public function execute()
    {
        echo "执行行为,赠B\n";
    }

}

//特殊规则Rule和Action分离
$promote = new Promote();
$rule = new Rule();
$action = new Action();
$promote->addRule($rule);
$promote->addAction($action);

//一般规则只有Rule
$promote1 = new Promote();
$rule1= new Rule1();

$promote1->addRule($rule1);

$promoteManage=new PromoteManage();

$promoteManage->addPromote($promote);
$promoteManage->addPromote($promote1);

$promoteManage->apply();

输出

通过规则,购A
执行行为,赠B
通过规则,打八折
执行行为,订单打八折
php
本作品采用《CC 协议》,转载必须注明作者和本文链接
Make everything simple instead of making difficulties as simple as possible
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!