電商的促銷模組,抽象出來。有兩個,規則和行為。
比如,後臺釋出一個促銷活動,滿足一定的條件,執行相對應的行為。
比如,買A贈B
1規則
買A
if(買A==true){
}
2 行為
贈B
if(買A==true){
execute('贈B')
}
促銷活動Promote
有一個Rule
,滿足了Rule
後,去執行相應的行為Action
。
有一些促銷活動沒必要拆分Rule
和Action
,比如滿100減30或者打8折活動,因為是作用於整單的沒有其它條件。對於購A贈B來說,是滿足某一特殊條件,條件和行為是必須分離的。
因此對於Rule
來說自己本身可有Action
3 Rule和Action什麼時候分離
-
有一般條件的
Rule
和Action
不分離 -
有特殊條件的
Rule
和Action
分離
寫了一個包
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
透過規則,打八折
執行行為,訂單打八折
本作品採用《CC 協議》,轉載必須註明作者和本文連結