java的设计有六大原则:
1:单一职责原则[SRP]
定义:
单一职责原则:应该有且仅有一个原因引起类的变更
There should never be more than one reason for a class to change
2:里氏替换原则[Liskov Substitution Principle]
3:依赖倒置原则[]
4:接口隔离原则[ISP]
Interface Segregation Principle
接口隔离原则是对接口进行规范约束,其包含以下四层含义:
4.1:
接口尽量要小。这是接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface)
有的时候,你不会那么轻易地看出,是不是还需要再拆分为两个接口呢?
可以参考下面的原则
4.1.1:根据接口隔离原则拆分接口时,必须首先满足单一职责原则。
接口要高内聚。什么是高内聚?高内聚就是提高接口、类、模块的处理能力,减少对外的交互
4.1.2:
定制服务。一个系统或系统内的模块之间必然会有耦合,有耦合就要相互访问的接口(并不一定就是Java 中定义的Interface,也可能是一个类或者是单纯的数据交换),我们设计时就需要给各个访问者(也就客户端)定制服务
4.2:
接口设计是有粒度的。接口的设计粒度是越小系统越灵活,这是不争的事实,但是这就带来的结构的
复杂化,开发难度增加,维护性降低,这不是一个项目或产品所期望看到的,所有接口设计一定要注意适
度,适度的“度”怎么来判断的呢?根据经验和常识判断!
接口隔离原则是对接口的定义也同时是对类的定义,接口和都尽量使用原子接口或原子类来组装,但
是这个原子该怎么划分是这个模式也是设计中的一大难题,在实践中应用时可以根据以下几个规则来衡量:
一个接口只服务于一个子模块或者业务逻辑。
通过业务逻辑压缩接口中的public 方法。接口时常去回顾,尽量做让接口达到“满身筋骨肉”,而不
是“肥嘟嘟”的一大堆方法。
已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理。
了解环境,拒绝盲从。每个项目或产品都有特定的环境因素,别看到大师是这样做的你就照抄,千万
别,环境不同的,接口拆分的标准就不同。深入了解的业务逻辑,最好的接口设计就出自的你的手!
4.3:
4.4:
5:迪米特法则[LKP or LoD]
Least Knowledge Principle
迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高,其要求的结果就是产生了大量的中转或跳转类
6:开闭原则[OCP]
高内聚:
高内聚就是提高接口、类、模块的处理能力,减少对外的交互
低耦合:
我的理解:就是被调用者不应该把太多的方法暴露给调用者。