我对最佳做法有一个快速的问题,在特定情况下吸气剂和塞脂剂是否是最佳选择。这种情况是当我有类“ A”实例化类“ B”和“ C”时。 A类包含用于B和C类的公共获取器和设置器,以便将数据集中化。
这是最佳实践,还是最好通过参数将数据传递给B和C类?
谢谢
克里斯
最佳答案
简短的答案:这取决于
漫长的一句话:如果您的B和C类封装了可能在类A之外有用的数据和/或功能,而A是B和C的“唯一”客户端,则使它们独立于A实例化,并通过设置器设置为A就像setA/setB
。这样,其他类无论出于何种原因都可以使用B和C。您还可以利用继承,即在运行时将具有增强功能的实例引入类A(例如,通过诸如JohnReeeves所述的Inversion of Control框架)。
如果它们仅在A类的上下文中有意义,则封装仅A直接使用的功能,将其隐藏在外面,并通过A类的方法/属性进行参数化。这使您可以自由更改B和C的实现,以免外部任何代码感到不安。 A是一个公共接口,也就是说,B和C是内部实现。
通常,您可以从实现中隐藏的越多越好,让外界仅了解必要的信息才能正常运行。
因此,请考虑一下A,B和C的确切目标,彼此之间以及与外界的关系,然后做出决定。