1. 单一职责原则:(Single Responsibility Pinciple)
一个类只负责一项职责,就负责一件事情。 当超过一项职责需要负责时,需要增加新的类来负责新的职责,而不是在类中增加新的代码。
如果一个类承担的职责太多,就是高度地职责耦合,非常不利于扩展功能。这是非常脆弱的设计。容易发生修改一个地方而影响其他地方的情况。
遵循单一职责原则的优点:- 降低类的复杂度
- 提高类的可读性,提高系统的可维护性
- 变更引起的风险降低
2. 里氏代换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。
包含4层含义:
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
不遵循里氏代换原则的后果是,写代码出错的机率会大大增加。
3. 依赖倒置原则:(Dependence Inversion)高层模块不应依赖低层模块,两个都应依赖于抽象。
抽象不应该依赖于具体,具体应该依赖于抽象。
依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在java中,抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
依赖倒置原则的核心思想是面向接口编程, 而不是面向实现编程。
在传统的开发架构中, controller-->service-->dao,就遵循了依赖倒置原则。 controller调用service的是API,service调用dao也是调用API。这样,API中的实现细节变化,不会影响API的调用者。
4. 迪米特原则:一个对象应该对其他对象保持最少的了解。
又叫最少知道原则。
通俗地说,就是一个类对自己依赖的类知道的越少越好。
也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
迪米特法则还有一个更简单的定义:只与直接的朋友通信。
软件编程的总原则:低耦合,高内聚。
无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。
迪米特原则为了降低类与类之间的耦合。
5. 开闭原则: 对扩展开放,对修改关闭。
一个软件实体,如类、模块和函数,对扩展开放,对修改关闭。
问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。
解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
开闭原则无非就是想表达这样一层意思:用抽象构建框架,用实现扩展细节。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们只需要根据需求重新派生一个实现类来扩展就可以了。当然前提是我们的抽象要合理,要对需求的变更有前瞻性和预见性才行。
前面说的5项原则,恰恰是告诉我们用抽象构建框架,用实现扩展细节的注意事项而已:单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。
相关推荐
### 设计模式六大原则详解 #### 一、开闭原则(Open-Closed Principle) **含义:** 开闭原则强调的是“对扩展开放,对修改关闭”。这意味着系统的设计应该是灵活的,能够轻松地添加新的功能而不需要修改现有代码...
设计模式六大原则是软件设计中遵循的一些基本原则,目的是为了使软件设计更加灵活、可维护和可扩展。六大原则分别是:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则。 1. 单一...
在这篇文章中,我们将深入探讨设计模式的六大原则,这些原则是理解并有效应用设计模式的基础。 首先,我们要了解“开-闭”原则(Open-Closed Principle,OCP)。这个原则指出,一个软件实体(如类、模块或函数)...
### 设计模式六大原则之单一职责原则详解 #### 原则定义 单一职责原则(Single Responsibility Principle, SRP)是面向对象设计的基本原则之一,它指出一个类应该仅有一个引起其变化的原因。换句话说,一个类应该专注...
六大设计原则是理解设计模式的基础,它们包括: 1. 单一职责原则(SRP):一个类应该只有一个引起它变化的原因,即一个类只做一件事情。 2. 开放封闭原则(OCP):软件实体(类、模块、函数等)对扩展开放,对修改...
在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计模式以及面向对象的基本原则。 面向对象的基本原则主要包括: 1. 单一职责原则(Single Responsibility ...
设计模式六大原则是软件开发中不可或缺的指导...总之,设计模式六大原则为软件设计提供了坚实的理论基础,帮助开发者构建出更加灵活、可维护的代码。在实践中,开发者需要结合具体情况灵活运用,以达到最佳的设计效果。
JAVA的六大设计原则是对设计模式应用的指导,是使软件更加灵活、易于维护和复用的基础。这六大设计原则包括: 1. 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因,即...
二、设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序...
设计模式的六大原则: 1. **开闭原则**:对扩展开放,对修改关闭,意味着在保持软件原有功能的基础上,可以方便地扩展新功能。 2. **里氏代换原则**:子类必须能够替换掉它们的基类,保证软件组件的可替换性,确保...
### JAVA设计模式的六大原则 #### 一、开闭原则(Open-Close Principle) **定义:** 开闭原则强调的是软件实体(类、模块、函数等)应该是可扩展的但不可修改的,即软件实体应该对扩展开放,对修改关闭。 **实践...
在软件开发领域,设计模式和原则是至关重要的概念,它们为开发者提供了可重用的解决方案,以应对常见的设计问题。本文将深入探讨GRASP(一般 Responsibility Assignment Software Patterns,职责分配原则)以及设计...
总之,设计模式六大原则是软件设计的核心思想,它们为构建高质量、可维护的软件提供了坚实的理论基础。学习并理解这些原则,将有助于提升软件开发的效率和质量。结合Spring框架的源码解析,我们可以更深入地理解和...
本文件《设计模式与设计原则.pdf》中,将详细地探讨设计模式以及与之相关的六大设计原则。 首先,设计模式主要分为三类: 1. 创建型模式(Creational patterns):这些模式提供了一种在创建对象的同时隐藏创建逻辑...
六大设计原则是设计模式的基础,包括单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则。单一职责原则确保类只做一件事情,提高代码可读性和可维护性;里氏替换原则允许子类替换父类而...
接下来将介绍六大设计原则。 #### 1. 单一职责原则(Single Responsibility Principle) 一个类应该只负责一项职责。如果一个类承担了两个职责,那么该类应该被拆分。 **应用场景:** - 当一个类包含多个功能时,...
在本文中,我们将深入探讨设计模式的六大法则,这些原则是面向对象设计的基础,有助于创建更加灵活、可维护和可扩展的代码。 1. 单一职责原则(Single Responsibility Principle, SRP) 单一职责原则强调一个类或...