在面向对象程序设计的世界里,我们不得不时刻牢记“The Law of Demeter”。下面说说Demeter定律的基本意思:
1. 模块不应了解它所操作对象的内部情形,亦即对象必须隐藏数据,暴露操作。这么做的好处是,对象操作时的形式一直性,不会出现有的访问出现操作,有的访问出现数据;
2.更深层次的理解,类的某一个内部方法只能调用的方法有:
类方法;
该方法创建的对象;
传入该方法的参数的对象;
类实体变量持有的对象。
而方法不能调用的函数有:
由任何函数返回的对象的方法,即你只能跟朋友交流,而不能跟陌生人交流。例如:
这里使用了ctxt类的操作返回的对象的方法,这就违反了Demeter定律,显示是不好的。
但是,我们需要记住:Demeter定律只是用于对象,而对于数据结构基本上实效的。切记!