四、接口隔离原则(Interface Segregation Principle,ISP)
1、实例接口;在Java中使用关键字new产生一个实例,它是对一个类型事物的描述,它是一个接口。比如定义一个Person类,使用new实例化Person。Person p = new Person();其中Person就是p的一个接口。
2、类接口;由Java中的关键字Interface定义的接口。
接口隔离原则的定义:
1、Clients should not be forced to depend upon interfaces that they don't use.
2、The dependency of one class to another one should depend on the smallest possible interface.
通过上边两条定义可以通俗点讲:接口尽量细化,同时接口中的方法尽量少。接口是我们设计时对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵活性和可维护性。根据接口隔离原则拆分接口时,首先必须满足单一职责原则。
实际设计:
1、一个接口只服务于一个子模块或者业务逻辑;
2、通过业务逻辑压缩接口中的public方法,尽量使接口达到满身筋骨肉;
3、已经被污染的接口,尽力修改,如果风险大,则使用适配器模式进行转化;
4、了解环境,拒绝盲从;
五、迪米特法则(Law of Demeter,LoD)也称最少知识原则(Least Knowledge Principle,LKP)
规则是:一个对象应该对其他的对象有最少的了解。(Only talk to your immedate friends)
迪米特法则要求类要羞涩一点,尽量不要对外公布太多的public方法和非静态public变量,迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。
迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了,类的复用率才能提高。
六、开闭原则(Open Closed Principle,OCP)
Software entities like classes, modules and functions should be open for extension but closed for modification.
开闭原则是面向对象设计的基本设计规则,其他原则是开闭的具体形态的体现。
开闭原则的好处有:
提高代码的复用性,可维护性好。