【发布时间】:2016-03-17 06:37:16
【问题描述】:
在我的申请中,潜在客户必须经历一些阶段。
例如:
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);
这是正确的做法吗?
【问题讨论】:
标签: php algorithm oop laravel design-patterns