gpt4 book ai didi

php - 应用程序中管道/阶段的设计模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:42 26 4
gpt4 key购买 nike

在我的申请中,有一些潜在客户必须经历的阶段。

例如:

New
In Progress
Won
Lost

这些只是 11 个阶段中的四个阶段。在每个阶段,都会有一些必须执行的操作。

例如,一个线索从新的移动到进行中,我需要更新四个表中的一组特定值。

我可以在这里使用什么理想的设计模式,以便将来如果有任何新阶段出现,可以很容易地在代码中适应它?

我在考虑使用工厂模式。

编辑:我做了这样的事情:

interface StageInterface
{
public function changeStage($previous_stage, $next_stage, $ticket_details);
}

abstract class ParentStage implements StageInterface
{
public function changeStage($previous_stage, $next_stage, $ticket_details)
{
$ticket_details->stage_id = $next_stage;
$ticket_details->save();

return $this;
}
}

Class InProgress extends ParentStage
{
}

class TicketStagesFactory
{
protected $data;

public function __construct($data)
{
$this->data = $data;
}

public function getObject()
{
switch ($this->data) {

case Stage::IN_PROGRESS:
return new \App\Http\Controllers\Stages\InProgress();
break;
}
}

然后我像这样使用工厂:

$factory = new TicketStagesFactory($next_stage);
$test = $factory->getObject()->changeStage($previous_stage, $next_stage, $ticket_details);

这是正确的做法吗?

最佳答案

这实际上看起来更像是一个工作流程。状态机更像这样工作: 对于一个状态,一个事件会导致它转换到另一个状态。工作流程更像您所说的那样: 对于一个状态,必须执行 Action ,这些 Action 的结果决定下一个状态。

我会寻找 php 的工作流引擎,使您的工作可维护。

关于php - 应用程序中管道/阶段的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36053247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com