迪米特法则
什么是迪米特法则? 迪米特法则(Law of Demeter, LoD)也称为最少知识原则(Least Knowledge Principle, LKP),由 Ian Holland 在 1987 年提出。 Each unit should have only limited knowledge about other units: only units “closely” related to the current unit. 每个单元应该只对与其紧密相关的单元有有限的了解。 更通俗的表述是:只和直接朋友交流,不要和陌生人说话。 核心思想 什么是"直接朋友"? 一个对象的"直接朋友"包括: 当前对象本身(this/self) 作为参数传入的对象 当前对象创建的对象 当前对象的成员变量 全局对象(如单例,技术上可访问,但应谨慎依赖) class Person { let wallet: Wallet // 成员变量 - 直接朋友 func buyItem(shop: Shop, item: Item) { // 参数 - 直接朋友 let receipt = Receipt() // 自己创建的对象 - 直接朋友 // 以下都是与直接朋友交流 let money = wallet.getMoney() shop.sell(item: item) receipt.record(item: item) } } 什么是"陌生人"? 如果需要通过多层对象去访问另一个对象,那个被间接访问的对象就是"陌生人"。 ...