Java设计模式7大原则

195 阅读4分钟

1、单一职责原则

介绍:对于类来说,即一个类应该只负责一项职责

例如:A类负责不同职责:职责1、职责2;当职责1发生改变可能会导致职责2发生异常,需要把A类拆分为2个类,分别去负责职责1和职责2,让它们各干各的互不影响。

目的:

  1. 降低类的复杂度,一个类只负责一项职责。

  2. 提高类的可读性、维护性。

  3. 降低变更引起的风险。

  4. 只有类中的方法足够少,才可以在方法级别保持单一原则。

2、开闭原则

介绍:程序设计的最基础,最重要的设计原则。

          核心思想是对扩展开放(相对提供方),对修改关闭(相对使用方)

          用抽象构建框架,用实现扩展细节。

3、接口隔离原则

介绍:一个类对另一个类的依赖应该建立在最小接口上。例如A接口有5个方法,B、D类接口对A实现,B需要123方法,D需要234方法,这样就违背了接口隔离原则。应该把5个方法拆分为不同的接口或抽象,让BD需要的函数去继承或实现对应的接口或抽象。

说明:一个类通过接口依赖另一个类,希望依赖接口是最小的,用不到的方法可以通过接口进行隔离

4、依赖倒转原则

介绍:高层模块不应该依赖低层模块,两者都应该依赖抽象(抽象类或接口)。

抽象不应该依赖细节,细节应该依赖抽象

中心思想就是面向接口编程。

依赖关系传递分为:接口传递、构造方法传递、setter方法传递。

细节:

  1. 低层模块尽量要有抽象(抽象类或接口),这样程序的稳定性好。

  2. 变量的声明类型尽量是抽象类或接口,这样变量的引用和实际对象间,就存在缓冲层,利于程序扩展、优化。

5、里氏替换原则

原由:继承在给程序设计带来便利的同时,也带来弊端。使用继承会给程序带来侵入性,程序的可移植性降低,增加对象耦合性,一个类被其他类所继承,当这个类修改,会影响所有子类,所有涉及到子类的功能也会产生影响。

介绍:在子类中尽量不要重写父类的方法。里氏替换原则告诉我们,继承让两个类的耦合性增强了,可以通过聚合、组合、依赖来降低耦合度。

6、迪米特法则

定义:又叫最少知道原则;还可以定义为只与直接朋友通信。

介绍:一个对象应该对其对象保持最少的了解。一个类对自己依赖的类知道的越少越好,对于被依赖的类,尽量将逻辑封装到类的内部,对外提供public方法。

直接朋友:只要对象之间有耦合关系,我们说对象之间有朋友关系,耦合方式有很多,依赖、关联、组合、聚合等。其中出现成员变量、方法参数、方法返回值中的类为直接朋友;陌生的类最好不要以局部变量的形式出现,在类的内部,这样违背了迪米特法则。

迪米特法则的核心思想是降低类之间的耦合。只是降低类之间的耦合关系,并不是没有依赖。

7、合成复用原则

尽量使用合成/聚合的方式,而不是继承。

设计原则核心思想:

  1. 找出应用中可能会变化的,把它们独立出来,不要和那些不变的混在一起。

  2. 针对接口编程,而不是针对实现编程。

  3. 为了交互对象之间松耦合设计而努力。

总结:

开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;单一职责原则告诉我们实现类要职责单一;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合度;合成复用原则告诉我们要优先使用组合或者聚合关系复用,少用继承关系复用。在实际开发中我们可以根据业务来进行设计模式的使用,但是很重要的一点千万不要被这些条条框框束缚了你的手脚。