您的位置:首页 > 编程语言 > Java开发

Java设计原则整理

2018-03-01 14:24 162 查看

Java设计原则整理

1.单一职责原则 ( SRP,Single Responsibility Principle )

一个类,应该只有一个引起它变化的原因,类变化的原因就是职责。

一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,如果一个类承担的职责过多,就等于把这些职责耦合在一起了。

这种耦合会导致脆弱的设计,当发生职责变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心就是解耦和增强内聚性。

2.开闭原则 ( OCP,Open Close Principle)

一个实体(类、函数、模块等)应该对外扩展开放,对内修改关闭。

即每次发生变化时,要通过添加新的代码来增强现有类型的行为,而不是修改原有的代码。

符合开放封闭原则的最好方式是提供一个固有的接口,然后让所有可能发生变化的类实现该接口,让固定的接口与相关对象进行交互。

3.里氏代替原则 ( LSP,Liskov Substitution Principle)

定义是任何基类可以出现的地方,子类一定可以出现。

里氏替换原则是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。

里氏替换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏替换原则是对实现抽象化的具体步骤的规范。

4.依赖倒置原则( DIP,Dependence Inversion Principle)

细节应该依赖于抽象,而抽象不应该依赖于细节。

这个原则是开闭原则的基础,依赖倒置原则就是要求调用者和被调用者都依赖抽象,这样两者没有直接的关联和接触,在变动的时候,一方的变动不会影响另一方的变动。依赖倒置强调了抽象的重要性,针对接口编程,依赖于抽象而不依赖于具体。

5.接口隔离原则 ( ISP,Interface Segregation Principle)

使用多个专门功能的接口,而不是使用单一的总接口。

不要让一个单一的接口承担过多的职责,而应把每个职责分离到多个专门的接口中,进行接口分离。目的就是降低类之间的耦合度,便于软件升级和维护。

6.合成复用原则(CARP,Composite Reuse Principle)

在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分。

继承的耦合性更大,比如一个父类后来添加实现一个接口或者去掉一个接口,那子类可能会遭到毁灭性的编译错误,但如果只是组合聚合,只是引用类的方法,就不会有这种巨大的风险,同时也实现了复用。

新对象通过向这些对象的委派达到复用已用功能的目的。简单地说,就是要尽量使用合成/聚合,尽量不要使用继承。

7.最少知识原则(迪米特法则)

一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

通俗地说就是:只与你直接的朋友们通信;不要跟“陌生人”说话。迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。

外观模式(Facade Pattern)和中介者模式(Mediator Pattern)就使用了迪米特法则。

8.最后

保重你自己,因为当你凝视深渊的时候,深渊也在凝视你。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计 java