単一責任の原則とカプセル化を両立させるのに苦労しています。クラス間で責任を分割するには、多くのデータを公開する必要があるようです。例として、 というオブジェクトを考えてみましょうDataPoints
。DataPoints
とりわけ、x 座標と y 座標で埋められます。を満たす Generator クラスを作成できますDataPoints
。ここで、これらのデータ ポイントをプロットするとします。明らかに、それは と呼ばれるクラスに由来する別の責任ですDataPointsPlotter
。しかし、データをプロットするには、内部の x 座標と y 座標が何であるかを知る必要があります。両方を処理する単一のクラスでは、問題ありません。x と y は内部変数ですが、create() メソッドと print() メソッドの両方がそれらにアクセスできます。x と y を (おそらく getter/setter を介して) 公開するか、DataPoints
構造体を Plotter クラスに追加しますが、x と y を取得するには内部に入る必要があります。DataPoints
x と y を送信するクラスで Plotter のインスタンスを宣言できます。しかし、それはまだ露出です。
この例で、カプセル化に違反することなく、プロッターを使用して x と y をプロットするにはどうすればよいですか?