如何使用复合规范模式实现isGeneralizationOf?
我正在尝试实现复合规范模式,根据Fowler和Evans的规范文档。
在第一印象中,我认为
isGeneralizationOf
的实现对于连接和分离是不同的。
特别是,我认为结合的逻辑是
(1)让specX成为specA和specB的结合。然后,只有当specA和specB都是specC的泛化时,specX才是specC的推广。
我认为分离的逻辑是
(2)让specY成为specA和specB的分离。然后,如果specA或specB是specC的泛化,则specY是specC的推广。
但是,在文档的第16页上,它们显示了以下方法:
CompositeSpecification >> isGeneralizationOf: aSpecification
"True if each component is subsumed. False if any component is not subsumed."
^ (self components contains:
[:each |(each isGeneralizationOf: aSpecification) not ]) not
我在(1)和(2)中的推理是否正确?如果这是错的,为什么呢?如果它是正确的,那么为什么作者定义了一个单独的方法来继承连接和析取规范?他们的意图是什么?
没有找到相关结果
已邀请:
2 个回复
怪酞撩匹
如果你首先定义对象a和b,你可以在Squeak中获得这个语法很好,因为{}是动态数组文字的特殊语法(在类Array中定义isSpecializationOf:)。
需复
#includesAllOf:在Collection类中定义