我有决定有关类责任的问题。
我有3 HTML的形式:
- 每种形式存在要被包括含有用于某些形式的文本和标记物的HTML模板
- 每个窗体需要被验证,如果有错误的模板,并从(1)需要重新显示的形式,连同一些错误消息。 只有某些领域是跨越不同形式普遍。
- 如果没有错误,需要邮寄的结果消息。 对于每个窗体有一个结果邮件模板。
我觉得很难对这一问题的好方案类决定。 一种可能性是通过功能分离的类
- CheckFormData:检查表单数据
- DisplayForm:显示形式有/无误差(或过于分开这?)
- EmailForm:emailform。
我不清楚这件事。 知识大约一个特定形式的字段被分散翻过的各种类。
有一些工作流程。 也许我也应该有一个工作流程类:
class FormSubmitWorkFlow
{
function start()
{
$this->displayForm->render();
}
function processFormData($data)
{
$this->checkForm->setData($data);
if (!$this->checkForm->isValid()) {
$errors = $this->checkForm->getErrors();
$this->displayForm->setData($data)->setErrors($errors)->render();
} else {
$this->emailForm->setData($data)->email();
}
}
function setDisplayForm(DisplayForm $df)
{
$this->displayForm = $df;
}
function setCheckForm(CheckForm $cf)
{
$this->checkForm = $cf;
}
function setEmailForm(CheckForm $ef)
{
$this->emailForm = $ef;
}
}
对于每一个表单类型(记住,还有他们的3)我需要一个
-
CheckForm
, -
EmailForm
和 -
DisplayForm
类。
3×3 = 9 +类3基类= 12类。
此外,要正确CheckForm子类和EmailForm子类注入到工作流程中,他们都需要是相同的形式类型。 也许我们需要为此创建FormWorkFlowFactory。 这就增加了13个班。
现在,我得到了我做可怕的错误的感觉。 如果我有FormSubmitWorkFlow
作为模板方法的类,我可以创建3个亚类,但每个子类会混合不同的责任。
你怎么能改善这一点,你可以激励你的答案,即什么方法引导你到你的答案?
编辑 :尽管目前唯一的答案是非常有用的,它会很高兴看到来自与它同意一些人的投票,或者我想听到来自社会各界更好的解决方案。 我是谁upvoted这个答案只有一个。 这个问题可以用更多的投入,所以觉得免费提供这样:-)