前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【设计模式前置课】软件设计的七原则

【设计模式前置课】软件设计的七原则

作者头像
韩旭051
发布2020-12-08 10:25:01
4370
发布2020-12-08 10:25:01
举报
文章被收录于专栏:刷题笔记刷题笔记刷题笔记

【设计模式前置课】软件设计的七原则

    • 设计模式
    • 为啥要学设计模式
    • 七大原则
      • 1. 开闭原则
      • 2. 里氏替换原则
      • 3. 依赖倒置原则
      • 4. 单一职责原则
      • 5. 接口隔离原则
      • 6. 最少知道原则
      • 7. 合成复用原则
    • 最后BB两句
      • 七大设计原则
      • 设计模式-创建型模式
      • 设计模式-结构性模式
      • 设计模式-行为型模式
    • 参考文章

写了几个 Java 项目后发现自己的代码 和 Github 上其他大佬差的太多太多,后来才发现,仅仅学会 Java 的语法是远远不够的,如果 学了 前人总结好的 设计模式,代码的风格和实用性 会有很大的提升。

设计模式

学习设计模式之前,我们必须要知道

  • 为什么要学习设计模式
  • 设计模式能为我们解决什么

7 种设计原则是软件设计模式必须尽量遵循的原则,各种原则要求的侧重点不同

  1. 开闭原则
  2. 里氏替换原则
  3. 依赖倒置原则
  4. 单一职责原则
  5. 接口隔离原则
  6. 最少知道原则
  7. 合成复用原则

七种原则都需要 我们先掌握 之后才能继续学习设计模式

为啥要学设计模式

设计模式是一种经验的总结,是前人的总结提炼形成的设计模式。

学习设计模式的过程中,最重要的是掌握其中的设计思想

设计模式最重要的思想是解耦

所以我们需要将其解耦思想为自己所用,从而提升自己编码能力,使自己的代码更加容易维护、扩展。

七大原则

开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭; 里氏替换原则告诉我们不要破坏继承体系; 依赖倒置原则告诉我们要面向接口编程; 单一职责原则告诉我们实现类要职责单一; 接口隔离原则告诉我们在设计接口的时候要精简单一; 迪米特法则告诉我们要降低耦合度; 合成复用原则告诉我们要优先使用组合或者聚合关系复用,少用继承关系复用。

1. 开闭原则

开闭原则:Open-Closed Principle,简称为 OCP

在一个软件实体中(如类,函数等),我们应该对扩展开放、对修改关闭,这样就可以提高软件系统的可复用性和可维护性。

开闭原则是面向对象设计的最基本原则,而遵守开闭原则的核心思想就是面向抽象编程。

2. 里氏替换原则

里氏替换原则:Liskov Substitution Principle,简称为 LSP。其指的是继承必须确保超类所拥有的性质在子类中仍然成立,也就是说如果对每一个类型为 T1 的对象 o1 都有类型为 T2 的对象 o2,使得以 T1 所定义的程序 P 在所有的对象 o1 都替换成为 o2 时,程序 P 的行为没有发生改变。

里氏替换原则具体可以总结为以下 4 点:

  • 子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
  • 子类中可以增加自己的特有方法。
  • 当子类方法重载父类的方法时,方法的前置条件(即方法的输入/入参)要比父类方法输入的参数更宽松。
  • 当子类实现父类的方法(重载/重写/实现抽象方法),方法的后置条件(即方法的输出/返回值)要比父类更严格或者相等。

3. 依赖倒置原则

依赖倒置原则:Dependence Inversion Principle,简称为 DIP。其指的是在设计代码结构时,高层模块不应该依赖低层模块,而是都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。通过依赖倒置原则可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,而且能够降低修改程序所带来的风险。

4. 单一职责原则

单一职责原则:Single Responsibility Principle,简称为 SRP。其指的是不要存在多于一个导致类变更的原因。假如我们有一个类里面有两个职责,一旦其中一个职责发生需求变更,那我们修改其中一个职责就有可能导致另一个职责出现问题,在这种情况应该把两个职责放在两个 Class 对象之中。

单一职责可以降低类的复杂度,提高类的可读性和系统的可维护性,也降低了变更职责引发的风险。

5. 接口隔离原则

接口隔离原则:Interface Segregation Principle,简称为 ISP。接口隔离原则符合我们所说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性,在设计接口的时候应该注意以下三点:

  • 一个类对其它类的依赖应建立在最小的接口之上。
  • 建立单一的接口,不建立庞大臃肿的接口。
  • 尽量细化接口,接口中的方法应适度。

6. 最少知道原则

迪米特法则:Law of Demeter,简称为 LoD,也叫 最少知道原则(Least Knowledge PrincipleLKP)。是指一个对象对其它对象应该保持最少的了解,尽量降低类与类之间的耦合。

7. 合成复用原则

合成复用原则:Composite Reuse Principle,简称为 CRP,又叫组合/聚合复用原则(Composition/Aggregate Reuse PrincipleCARP)。指的是在软件复用时,要尽量先使用组合(has-a)或者聚合(contains-a)等关联关系来实现,这样可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其它类造成的影响相对较少。

继承通常也称之为白箱复用,相当于把所有的实现细节都暴露给子类。组合/聚合也称之为黑箱复用,对类以外的对象是无法获取到实现细节的。

最后BB两句

设计模式是一种思想,而软件设计七大原则就是设计思想的基石

除了这七个设计原则 后面还有

  • 创建型模式
  • 结构性模式
  • 行为型模式

三大类型的模式 23 种 小类型的 设计模式 后面有空会补上

七大设计原则

  • 开闭原则
  • 依赖导倒置原则
  • 单一职责原则
  • 接口隔离原则
  • 迪米特原则
  • 里氏替换原则
  • 合成复用原则

设计模式-创建型模式

  • 工厂方法模式
  • 抽象工厂模式
  • 建造者模式
  • 单例模式
  • 原型模式

设计模式-结构性模式

  • 适配器模式
  • 装饰者模式
  • 代理模式
  • 外观模式
  • 桥接模式
  • 组合模式
  • 享元模式

设计模式-行为型模式

  • 策略模式
  • 模板方法模式
  • 观察者模式
  • 访问者模式
  • 迭代器模式
  • 责任链模式
  • 中介者模式
  • 解释器模式
  • 状态模式
  • 命令模式
  • 备忘录模式**

看了目录,发现东西 挺多的 慢慢学吧,反正早晚也要学,不如现在就整起来

参考文章

博客园 软件设计的七大原则

CSDN 软件设计的七大原则

CSDN 软件设计的七大原则 never123450

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【设计模式前置课】软件设计的七原则
  • 设计模式
  • 为啥要学设计模式
  • 七大原则
    • 1. 开闭原则
      • 2. 里氏替换原则
        • 3. 依赖倒置原则
          • 4. 单一职责原则
            • 5. 接口隔离原则
              • 6. 最少知道原则
                • 7. 合成复用原则
                • 最后BB两句
                  • 七大设计原则
                    • 设计模式-创建型模式
                      • 设计模式-结构性模式
                        • 设计模式-行为型模式
                        • 参考文章
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档