加载中...

迪米特法则(Law of Demeter,LoD)又称最少知识原则(Principle of Least Knowledge),1987 年由美国东北大学的 Demeter 项目提出:一个对象的方法只应调用自身、方法参数、自己创建的对象以及自身直接持有的成员对象的方法,不应通过返回值链式深入陌生对象。
"只跟直接朋友说话,不跟朋友的朋友说话"。像 order.getCustomer().getAddress().getCity() 这样的长调用链(train wreck,火车残骸)即违反该法则,调用方被迫了解多层对象的内部结构。
改进方式是让中间对象提供委托方法,如 order.getShippingCity();这也与"命令而非询问"(Tell, Don't Ask)原则相呼应。
优点是降低耦合、修改内部结构不波及远端调用方;缺点是过度遵循会催生大量转发方法,对纯数据结构(如 DTO)通常不必苛求。

登录 后参与讨论
暂无讨论,来发表第一条评论吧