私はプロジェクトのクラスデザインにSOLID原則を適用しようとしています。 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の "Strategic Closure"に準拠していますか? SOLID例外に関する別の例がある場合は、設計者にとって役立つと思います。
SOLIDはインスピレーションです。マスターズはいつルールを破るかを知っています。 – usr
私はSOLIDに関する批判を見つけたhttp://www.tonymarston.co.uk/php-mysql/not-so-solid-oo-principles.html。誰かが彼に同意できますか? – Mehmet