迪米特法则: 如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
里氏代换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。
根据里氏代换原则为了提高系统的扩展性尽量使用基类去定义对象,在运行时用子类替换。同样迪米特法则也阐述的这个性质问题。
这个性质就是开放封闭原则。当俩类完全没有多大关系,你只是需要用到某个类里面的方法,难道你就需要去强行new出来,让这俩产生关系。当发生关系后期你又想隔离这种关系,你将会怎么处理,难道要每个类去清理吗?所以出现依赖倒转,我们不再类中依赖类,而是类中依赖抽象,当你想要x你就告诉抽象,当你不想要x想要y,你也去告诉抽象,当你要了100个,你就告诉抽象100次,不要了就不告诉抽象,而不需要100个人的都去告诉下。同时抽象只可以获取能获得(private不行等),也可以通过抽象去定义对象,让子类在运行时替换,方便扩展,这就是开放封闭原则。