【发布时间】:2017-01-04 00:54:52
【问题描述】:
我尝试在我的项目类设计中应用 SOLID 原则。 SOLID 原则是否有任何例外?我们是否必须明确地应用这些原则。比如我准备了一个工厂类。
class XAdderFactory
{
private Person _person;
public bool PersonHasNoRecords
{
get
{
return string.IsNullOrEmpty(_person.HasXRecords);
}
}
public XAdderFactory(Person person)
{
this._person = person;
if (PersonHasNoRecords)
{
new XListMakerAFactory(person);
}
else
{
new XListMakerB(person);
}
}
}
此类从不符合 OCP。
将来可能需要新的类型列表生成器,我必须添加一个新的 else if 块。
我的设计不好吗?
还是有没有经常提及的 SOLID 原则的例外情况?
我不确定,但我的示例是否符合 OCP 的“战略关闭”?
如果您有其他关于 SOLID 异常的示例,我认为这对设计师会有帮助。
【问题讨论】:
-
SOLID 是一种灵感。大师知道何时打破规则。
-
我发现对 SOLID tonymarston.co.uk/php-mysql/not-so-solid-oo-principles.html 的批评。有人同意他的观点吗?
标签: oop design-patterns architecture solid-principles