J'implémente le modèle de spécification. Le NotSpecification semble simple au premier abord:bonne façon d'implémenter NotSpecification: isSpecialCaseOf?
NotSpecification.IsSpecialCaseOf(otherSpecification)
return !this.specification.isSpecialCaseOf(otherSpecification)
Mais cela ne fonctionne pas pour toutes les spécifications:
Not(LesserThan(4)).IsSpecialCaseOf(Equals(5))
Cela devrait retourner false au lieu de vrai. Jusqu'à présent, je pense que la seule façon d'accomplir isSpecialCaseOf NotSpecification est d'implémenter le restedernsatisfiedBy (subsomption partielle dans l'article sur le modèle de spécification). Mais peut-être qu'il me manque quelque chose de plus simple ou un aperçu logique qui rend cela inutile. Question: Existe-t-il une autre façon de mettre en œuvre ceci en n'utilisant pas remainderUnsatisfiedBy?
Que devrait faire exactement "IsSpecialCaseOf()"? –
@gabriel: isSpecialCaseOf détermine essentiellement si une spécification est plus restrictive qu'une autre (car supérieur à 5 est plus restrictif que supérieur à 2). "La spécification B est un cas particulier de la spécification A si et seulement si pour tout objet candidat possible X, où A est satisfait par X, B sera toujours satisfait par X également." – koen