我閱讀了一些關於工廠抽象工廠模式的教程,並看到了一些示例。在其中一篇教程中,我讀到工廠模式可以取代主要的「if」或「switch case」語句,並遵循開放/封閉(固定)原則。基於輸入變量的工廠
在我的一個項目中,我有一個巨大的「開關盒」,我想用一個(抽象)工廠代替。它已經是基於接口的,所以實現一個工廠不應該那麼困難,但是在我閱讀的所有示例中,工廠根據配置生成了一個具體類型。任何人都可以指出我正確的方向如何實現一個工廠,可以產生多種類型的枚舉遵循堅實的原則,取代了大型的「開關盒」....或者我誤導了,是「開關盒」搬到工廠?
代碼在這一刻:
所有的public interface ISingleMailProcessor : IMailProcessor
{
MailResult ProcesMail(Mail mail);
}
public MailResult GetMailResult(mail)
{
ISingleMailProcessor mailprocessor;
switch (mail.MailType)
{
case MailConnector.MailType.AcronisBackup:
mailprocessor = new AcronisProcessor();
return mailprocessor.ProcesMail(mail);
case ......etc.
}
}
'enum'的長度是固定的 - 你不能以任何方式擴展 - 所以它就像一個'switch'語句。所以在某些方面它有相同的限制。你可以請你發佈你想要替換的'enum'和'if' /'switch'語句的例子嗎? – Enigmativity
我添加了一些已經在項目中的代碼。 –
所以它始終是'MailResult'從'Mail.MailType'返回? – Enigmativity