规则:
一个对象应该对其他对象有最少的了解。一个类应该对自己需要耦合或调用的类知道的最少。
1 只和朋友交流。只与直接的朋友通信,什么是直接的朋友呢?
每个对象都必然会与其他对象有耦合关系两个对象之间的耦合就成为朋友关系,这种关系的类型有很多,比如 组合,聚合,依赖等。
朋友类的定义是这样的:出现在成员变量,方法的输入,输出参数中的类成为成员朋友类,而出现在方法体内部的类不属于朋友类。
而Girl这个类就是出现在方法体里面,一次不属于教师类的朋友。
这样就破换了教师类的健壮性。
这是不允许的,严重违反了迪米特法则。
修改后如下:
注意:一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC()这种情况,除非极端的情况,类与类之间的关系是建立在类间的,而不是方法间,因此一个方法尽量不引用一个类中不存在的对象。
上述代码隐藏的代码有很严重的问题:
wizard吧太多的方法暴露给了install..类,两者的关系太亲密,耦合关系变得异常牢固。
将三个方法访问权限改为private,同时将install...中的方法移动到wizard中,这样 就对外公布了一个public方法。
多使用private protected权限
3 自己的就是你自己的
如果一个方法在本类中,既不增加类间的关系,也对本类不产生负面影响,那就放置在本类中。
4 谨慎使用Serializeable
最佳实战:
如果一个类跳转两次以上才能访问到另一个类,就需要想案发进行重构了,为什么是两次呢,因为一个系统的成功不仅仅是一个标准货值原则就能够决定的,有非常多的外在因素决定,跳转次数越多,系统越复杂,维护就越困难。