`

设计模式遵循的七大原则

 
阅读更多
1.开闭原则(Open Close Principle)
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。这个原则有两个特性,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。这就是“开放-封闭原则”的精神所在。
简单的用一句经典的话来说:过去的事已成历史,是不可修改的,因为时光不可倒流,但现在或明天计划做什么,是可以自己决定(即扩展)的。

2.里氏代换原则(Liskov Substitution Principle)
定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
定义2:子类型必须能够替换掉它们的父类型。

里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2.子类中可以增加自己特有的方法。
3.当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。


3.依赖倒转原则(Dependence Inversion Principle)
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程

依赖倒置原则的中心思想是面向接口编程,传递依赖关系有三种方式,以上的说的是是接口传递,另外还有两种传递方式:构造方法传递和setter方法传递,相信用过Spring框架的,对依赖的传递方式一定不会陌生。
在实际编程中,我们一般需要做到如下3点:
低层模块尽量都要有抽象类或接口,或者两者都有。
变量的声明类型尽量是抽象类或接口。
使用继承时遵循里氏替换原则。
    总之,依赖倒置原则就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。

4.接口隔离原则(Interface Segregation Principle)
采用接口隔离原则对接口进行约束时,要注意以下几点:
1. 接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
2. 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
3. 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
   运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。


5.组合/聚合复用原则

就是说要尽量的使用合成和聚合,而不是继承关系达到复用的目的
该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。
      其实这里最终要的地方就是区分“has-a”和“is-a”的区别。相对于合成和聚合,
继承的缺点在于:父类的方法全部暴露给子类。父类如果发生变化,子类也得发生变化。聚合的复用的时候就对另外的类依赖的比较的少。。
合成/聚合复用
① 优点:
新对象存取成分对象的唯一方法是通过成分对象的接口;
这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的;
这种复用支持包装;
这种复用所需的依赖较少;
每一个新的类可以将焦点集中在一个任务上;
这种复用可以在运行时动态进行,新对象可以使用合成/聚合关系将新的责任委派到合适的对象。
② 缺点:
通过这种方式复用建造的系统会有较多的对象需要管理。
继承复用
① 优点:
  新的实现较为容易,因为基类的大部分功能可以通过继承关系自动进入派生类;
  修改或扩展继承而来的实现较为容易。
② 缺点:
  继承复用破坏包装,因为继承将基类的实现细节暴露给派生类,这种复用也称为白箱复用;
  如果基类的实现发生改变,那么派生类的实现也不得不发生改变;
  从基类继承而来的实现是静态的,不可能在运行时发生改变,不够灵活。

6.迪米特法则(Law Of Demeter)
    迪米特法则其根本思想,是强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成影响,也就是说,信息的隐藏促进了软件的复用。

一句话总结就是:一个对象应该对其他对象保持最少的了解。
7.单一职责原则(Single Responsibility Principle)
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责,应该仅有一个引起它变化的原因
分享到:
评论

相关推荐

    第一章设计模式与七大原则.doc

    设计模式是软件工程中的一种重要思想,它是经验丰富的软件开发者在实践中提炼出来的一套解决方案模板。...在实际开发中,选择合适的设计模式和遵循设计原则,可以帮助我们构建出更加优雅、可扩展的系统。

    设计模式1

    设计模式遵循七大原则: 1. 开放封闭原则:对扩展开放,对修改关闭,意味着添加新功能时不应修改现有代码。 2. 单一职责原则:一个类只做一件事情,降低耦合度。 3. 依赖倒置原则:依赖于抽象而不是具体实现,增加...

    韩顺平_Java设计模式笔记.docx

    在课程中,韩顺平首先通过一些经典的面试题引入设计模式的主题,例如原型模式、设计模式的七大原则、状态转换图、解释器设计模式和单例设计模式。原型模式是一种用于复制对象的模式,分为深拷贝和浅拷贝,Spring框架...

    尚硅谷_韩顺平_图解Java设计模式

    第二章深入探讨了设计模式的七大原则,这是理解并运用设计模式的基础。设计模式的目的在于提高软件的灵活性、可扩展性和可维护性。这七大原则包括单一职责原则、接口隔离原则、依赖倒置原则、里氏替换原则、接口隔离...

    设计模式C#版

    在设计模式中,它反映了类与对象的先后关系,也即是对抽象与具体实现的思考,是设计模式中开放-封闭原则的体现,即软件实体应当对扩展开放,对修改封闭。 四、大瓶子套小瓶子还是小瓶子套大瓶子? 这个问题实际上在...

    设计模式解析(英文版).pdf

    设计模式之所以能够被广泛接受和应用,关键在于它们遵循了一系列基本原则和动机。这些原则和动机包括但不限于: 1. **封装行为**:设计模式强调封装不仅限于数据,更重要的是封装行为。这意味着将行为和数据紧密...

    Java设计模式学习笔记

    设计模式的七大原则 ##### 1.1 设计模式的目的 设计模式是一种解决特定问题的通用解决方案,它可以帮助开发人员编写出更高质量、更容易维护和扩展的代码。设计模式的目标在于提高代码的可重用性、可读性、可扩展...

    论设计模式的重要性-《重学设计模式》

    在设计模式的学习过程中,了解软件设计的七大原则也至关重要。这七大原则包括单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)、迪米特法则(LoD)和合成...

    设计模式精心总结

    六大原则是设计模式遵循的指导原则: 1. 开闭原则(Open/Closed Principle):软件实体应该是对扩展开放的,对修改关闭的。 2. 里氏代换原则(Liskov Substitution Principle):所有引用基类的地方必须能透明地...

    软件设计模式知识点

    软件设计模式还遵循七大设计原则: 1. 开放封闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。 2. 单一职责原则(SRP):强调的是职责的分离。 3. 里氏代换原则(LSP):在一个软件系统中,子类应该可以...

    面向对象七大基本设计原则.pdf

    面向对象七大基本设计原则通常是指SOLID原则,它是一组面向对象设计的指导原则,旨在使软件更加可维护和可扩展。SOLID由以下五个原则组成: 1. 单一职责原则(Single Responsibility Principle, SRP):一个类应该...

    设计模式汇总(含思维导图)

    设计模式分为三大类: 1. 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2. 行为型模式,共十一种:命令模式、迭代器模式、观察者模式、备忘录模式、状态模式、模板方法模式、...

    设计模式教程(design pattern)

    设计模式遵循一定的原则,这些原则是设计模式能够有效解决问题的基础。常见的设计模式原则包括但不限于: 1. **单一职责原则**:一个类应该只负责一项职责。 2. **开放封闭原则**:对扩展开放,对修改封闭。 3. **...

    java常用设计模式 设计原则 应用场景介绍 极速版

    ### Java常用设计模式、设计原则及其应用场景介绍 #### 一、设计模式概述 设计模式是一种在软件工程领域中被广泛采用的概念,它是一系列解决特定问题的通用解决方案的集合。这些解决方案通常来源于软件开发人员的...

    java开发中使用的设计模式

    #### 设计模式七大原则 设计模式原则是指导程序员在编程时应当遵守的基本准则,也是各种设计模式的基础。 1. **单一职责原则**:一个类应该只有一个引起它变化的原因。这意味着类应当专注于完成单一的任务。 2. **...

    设计模式(七)之装饰模式.zip

    这种模式遵循“开闭原则”,即对扩展开放,对修改关闭,是软件设计中的一种重要策略。在"设计模式(七)之装饰模式.zip"的压缩包中,核心文件"Decorate.cs"及其可能的子类,揭示了装饰模式的实现细节。 首先,让...

    设计模式基础培训材料-面向对象设计原则与模式

    #### 二、面向对象设计七大原则详解 1. **开闭原则(Open-Closed Principle, OCP)** - **定义**:开闭原则强调系统应当对扩展开放,对修改关闭。这意味着当需要增加新功能时,应尽可能不修改现有代码。 - **...

Global site tag (gtag.js) - Google Analytics