を含む単純なStore
クラスがありますInventory
。にはのInventory
リストが含まれていますItem
。の の1 つを変更するには、次Item
のInventory
ように記述する必要があります。
Store store( /*parameters*/ );
store.accessInventory(/*password*/).accessItem(/*item name*/).setPrice(9.50);
私が理解しているように、これはデメテルの法則を破っStore
ています。Inventory
Item
setPrice()
この法律違反を、ペーパーボーイと顧客の典型的な例における法律違反と調和させたいと思います。ペーパーボーイの例では、ペーパーボーイは、顧客が財布で支払いを行うと想定することで、顧客について「よく知っている」。顧客の支払い方法が変われば、ペーパーボーイも変更しなければなりません。
ペーパーボーイの例で発生したような問題を引き起こす可能性がある、コード内のどのような仮定が行われていますか?
法律は実際にはガイドラインであり、この場合それを遵守することは最善の考えではないことを理解していますが、先に進む前に少なくとも法律を理解したい. ありがとう。