J'essaie d'appliquer les principes SOLID dans la conception de classe de mon projet. Existe-t-il des exceptions aux principes SOLID? Devons-nous appliquer ces principes de façon DÉFINITIVE? Par exemple, j'ai préparé une classe d'usine.Existe-t-il des exceptions au principe 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);
}
}
}
Cette classe n'est jamais conforme à l'OCP.
De nouveaux fabricants de listes de types seront peut-être nécessaires dans le futur et je dois ajouter un nouveau bloc if if.
Mon design est-il mauvais?
Ou y a-t-il des exceptions aux principes SOLID qui ne sont pas mentionnés trop souvent?
Je ne suis pas sûr mais mon exemple est conforme à la "fermeture stratégique" d'OCP? Si vous avez d'autres exemples d'exceptions SOLID, je pense que ce serait utile pour les concepteurs.
SOLID est une source d'inspiration. Les maîtres savent quand enfreindre les règles. – usr
J'ai trouvé critisim à propos de SOLID http://www.tonymarston.co.uk/php-mysql/not-so-solid-oo-principles.html. Peut-on être d'accord avec lui? – Mehmet