1.单一职责原则
定义:一个对象应该只包含单一的职责,并且该职责被完成的封装在一个类中。
作用:单一职责是高内聚、低耦合的指导方针,一般而言,一个类、方法包含的职责越多,复用性越低。
当一个类职责过多,内聚性会很低,与其他类耦合性很高,在修改代码时,与其他类间关系复杂,修改困难。
2.接口隔离原则
定义:客户端(调用者)不应该依赖那些不需要的接口 (接口中方法应尽量与客户端所需功能相关)
根据接口隔离原则,当一个接口太大时应该按功能分成不同的小的接口,使用该接口的客户端只需要知道实现目标功能相关的方法即可。每个接口承担一种相应角色,不该干的事情不要干,该干的事情全都干。
作用:当一个接口包含职责过多会导致接口中方法数量膨胀,实现该接口时子类需要实现的方法数量过多会导致实现困难。将接口职责细化有利于子类实现、降低耦合,提高内聚。
单一职责原则与接口隔离原则往往共同实现。
3.开闭原则
定义:软件实体应对拓展开放,对修改关闭。
开闭原则指软件应尽量在不修改原有代码的情况下对功能进行拓展。
作用:如果一个软件设计符合开闭原则,那么可以非常方便的对系统进行拓展而不必修改原有代码,不会影响原有功能的实现,使得系统架构较为稳定,在拥有适应和灵活性的同时具备较好的稳定性和延续性。
实现方法: 对系统功能进行抽象化,将各种功能抽象为接口,由子类负责具体实现,不同的子类对应不同的功能。
4.里氏代换原则
定义:所有引用基类的地方必须能用子类进行代换(JAVA的继承 , 类型转换)。
里氏代换原则表明,在软件中将一个基类代换为子类,程序不会产生任何错误和异常。
里氏代换原则是实现开闭原则的重要实现方式之一,在程序设计中应尽量使用基类类型对各种对象进行定义,在运行时决定子类类型,即各种成员变量、参数类型在定义时应尽量声明为抽象或父类类型。
作用:可以降低与各种具体实现类间耦合度,在替换子类类型,拓展系统功能时代码修改量尽可能降低 或 搭配反射只修改配置文件,尽量符合开闭原则。
5.依赖倒转原则
定义:高层模块不应依赖于底层模块,他们都应依赖抽象,抽象不应依赖于细节,细节应依赖抽象(JAVA的接口和抽象类与子类的关系),抽象层定义,子类实现。
作用:依赖倒转原则要求针对接口编程,实现接口的各种要求,从而使各种子类具有相近的各种功能,能够符合里氏代换原则方便的进行替换,使得系统具有更好的灵活性,降低耦合度。
里氏代换原则和依赖倒转原则是实现开闭原则的手段,这三个原则通常共同出现。
6.合成复用原则
定义:要复用一个类时,优先使用对象组合,其次是去继承类
作用:1.使用组合可以使用目标类的父类(抽象层)进行声明,使系统更加灵活,降低与复用类间耦合。
2. 使用组合可使目标对象中各种实现细节和成员变量对调用类不可见,避免类间成员对象相互调用,降低耦合度。
一般而言,当目标类是调用类的一个模块时使用对象组合,当调用类是目标类的一个分支时使用继承。
7.迪米特法则
(60条消息) 迪米特法则详解--七大面向对象设计原则(6)_Geek.Fan的博客-CSDN博客_迪米特法则
迪米特法则的来源: 迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。于是就提出了迪米特法则。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
迪米特法则的简单定义: 只与直接的朋友通信。
首先来解释一下什么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖、关联、组合、聚合等。其中,当前对象本身(this)、成员变量、以参数形式传入当前对象方法中的对象、方法返回值中的类,当前对象创建的对象为直接的朋友。
迪米特法则的作用: 迪米特法则可降低系统的耦合度,使类与类之间保持较低的耦合关系。我们知道,软件编程有一个总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。 ———————————————— 版权声明:本文为CSDN博主「Geek.Fan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/fanyun\_01/…