私が取り組んでいる実際の何かの代用として、モデルの構築を検討してください。モデルパーツを表すクラスがあり、Parts
指定されたパラメータに基づいてパーツを製造したり、検証したりするためのメソッドが完備されてGlue
います。ほぼ同じことを行うModelBuilder
クラスとクラスがあります。
接着剤や部品をカプセル化して製造できます。次に、myPartsInstance
とGlueInstance
myModelBuilder
をパラメーターとしてmyに渡します。ここですべてがバラバラになります。Parts
ModelBuilderにビルドするように指示することはできますが、そのためには、 (およびおそらく)のデータにアクセスする必要がありますGlue
。たとえば、PartsInstance.Part[0]
適切に構築するために、のコーナーまたは中心がどこにあるかを知る必要があるかもしれません。
私はここで困惑しています。なぜなら、Tell、Do n't Askキャンプは、パーツが何らかの形でそれ自体を構築する必要があると言うように思われるからです。しかし、それは私には意味がありません。一部はモデル全体ではなく一部です。それがそれ自体を構築する必要があります。はModelBuilder
非常に複雑である可能性があり、Parts
他の場所で使用される可能性があります。一方、私はPartsInstance
オブジェクトの状態を調べて、その状態に基づいて決定を下しています。さらに、決定はParts
とにかく概念の中にのみ適合するものではないかもしれません。Glue
それは私が選んだタイプを含むかもしれません。
カプセル化に違反しないように、この例を作成または作り直すにはどうすればよいですか?