促销模块

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

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

比如,买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
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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