【发布时间】:2012-11-20 22:49:03
【问题描述】:
我在协调单一职责原则和封装时遇到了麻烦。似乎在类之间划分职责需要公开大量数据。例如,考虑一个名为DataPoints 的对象。 DataPoints 填充了 x 和 y 坐标等。我可以创建一个填充DataPoints 的生成器类。现在,假设我想绘制这些数据点。显然,这是一个单独的职责,可能来自名为DataPointsPlotter 的类。但要绘制数据,我需要知道内部 x 和 y 坐标是什么。一个班级同时处理这两个问题,这没问题。 x 和 y 是内部变量,但 create() 和 print() 方法都可以访问这些变量。我可以公开 x 和 y(也许通过 getters/setters--ugh),或者我可以将 DataPoints 结构传递给 Plotter 类,但它仍然需要进入内部才能获取 x 和 y。我可以在 DataPoints 类中声明一个 Plotter 实例,我将 x 和 y 发送到该类。但这仍然是一个曝光。
在这个例子中,我怎样才能在不违反封装的情况下使用绘图仪绘制 x 和 y?
【问题讨论】:
-
有人愿意解释这里的反对意见吗?据我所知,我用研究过的术语甚至是一个例子提出了一个直接、可回答的问题。
-
没有解释的单票否决通常被认为是统计噪音。有人不喜欢该帖子的某些内容,但由于不明显,可以忽略。
标签: language-agnostic encapsulation single-responsibility-principle