作为我正在研究的真实事物的代理,请考虑建立一个模型。我们有一个Parts
代表模型零件的类,包括根据给定参数制造零件的方法、验证等。我们有一个Glue
做同样事情的类和一个ModelBuilder
类。
我可以用很好的封装制造我的胶水和零件。然后我将 myPartsInstance
和GlueInstance
myModelBuilder
作为参数传递给 my。这就是一切都崩溃的地方。我可以告诉我的模型构建器进行构建,但要这样做,它需要访问Parts
(可能还有Glue
)中的数据。例如,我可能需要知道角落或中心在哪里PartsInstance.Part[0]
才能正确构建。
我在这里陷入困境,因为似乎告诉,不问阵营会说该部分应该以某种方式自行构建。但这对我来说没有意义。零件是零件,而不是整个模型。这就是应该建立自己的东西。ModelBuilder
可能非常复杂,并且可能会Parts
在其他地方使用。另一方面,我正在询问PartsInstance
对象的状态,然后根据该状态做出决定。Parts
此外,无论如何,该决定可能并不完全适合该概念。它可能涉及Glue
我选择的类型。
我怎样才能构造或修改这个例子,使它不违反封装?