设计模式的六大原则

参考:

  • 设计模式六大原则

1. 单一职责原则

一个类只负责一个明确的功能

优点:

  • 降低类的复杂度,提高代码可读性和可维护性
  • 降低变更时对其他功能的影响

2. 里氏替换原则

**原则一:**若 o1 是 C1 的一个实例化对象, o2 是 C2 的一个实例化对象,如果在使用 C1 的程序中将o1 替换为 o2 而程序行为没有发生变化,那么 C2 应该是 C1 的子类。

**原则二:**所有用到基类对象的地方,如果把基类对象替换成子类对象,程序行为不应该发生变化。

实现方法:

  1. 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;
  2. 允许子类拓展父类的方法
  3. 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  4. 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

3. 依赖倒置原则

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

比如手机(Phone)依赖CPU,那么 Phone 就是一个高层模块, CPU 就是一的低层模块,Phone 显然不应该依赖一个具体的低层模块(如 Qualcomm865):

public class Phone {private Qualcomm cpu;Phone(){this.cpu = new Qualcomm();}public void printConfig(){System.out.println("cpu is" + this.cpu);}
}

不管是高通还是麒麟,都应该抽象为一个CPU类,然后各自实现,高层模块只依赖于抽象的低层模块。

实现方法:

  1. 低层模块尽量都要有抽象类或接口,或者两者都有。
  2. 变量的声明类型尽量是抽象类或接口。
  3. 使用继承时遵循里氏替换原则。

4. 接口隔离原则

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

使用多个隔离的接口,比使用单个接口要好.

接口隔离原则

5. 迪米特法则

一个对象应该对其他对象保持最少的了解。

高内聚,低耦合

6. 开闭原则

对拓展开放,对修改封闭:当系统变化时,尽量通过拓展来实现变化,而不是去修改原有代码;

【设计模式 00】设计模式的六大原则相关推荐

  1. 设计模式(2)六大原则(七大原则)

    前言 前面已经明白了UML是什么,UML该在哪里用 接下来开始真正接触设计模式的思想:六大原则 目录 六大原则(七大原则) 开闭原则 2.1. 开闭原则的作用 2.2. 开闭原则的案例 里氏替换原则 ...

  2. 设计模式---设计模式的分类及六大原则

    设计模式 1.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:   工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构性模型,共七种:   适配器模型,装饰器模型,代 ...

  3. 设计模式(一)——六大原则

    概念: 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发 ...

  4. 设计模式学习笔记:六大原则

    单一职责里氏替换依赖倒置接口隔离迪米特法则开闭 设计模式有六大法则. 1.单一职责 这好理解,每个类只干一样事情 2.里氏替换 子类可以扩展父类的功能,但不要修改父类的功能.意为: 1)子类可以实现父 ...

  5. 《设计模式 系列》- 面向对象六大原则

    2019独角兽企业重金招聘Python工程师标准>>> 设计模式(Designpattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 一.单一职责原则 ...

  6. 设计模式 之 设计的 六大原则(1)单一职责原则

    由于这些原则性东西 属于概念东西,就不具体以代码描述了.以下是摘自网上和自己的一些理解 首先了解一些 面向对象的特性: 面向对象 有 三大基本特征:封装 ,继承, 多态. 封装: 也就是把客观事物封装 ...

  7. 设计模式(一)六大原则

    单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 开闭原则

  8. 设计模式之——面向对象的六大原则

    一.单一职责原则     定义:Single Responsibility Principle,即SRP:一个类应该是相关性很高的方法与数据的封装,不同的职责应该分别封装到不同的类或模块当中.     ...

  9. 二十三种设计模式-六大原则

    二十三种设计模式 一.创建型: 单例模式.工厂模式.抽象工厂模式.原型模式.建造者模式: 二.结构型: 代理模式,装饰器模式.适配器模式.外观模式.组合模式.享元模式.桥梁模式: 三.行为型: 策略模 ...

  10. 大话设计模式之爱你一万年:第一章 设计模式基本概念:3.设计模式的六大原则

    在设计<设计模式之爱你一万年>的时候,为了让我的23种设计模式有一个最基本的底层支撑,我总结出来了六大原则,希望我的23种设计模式能够尽量符合六大原则,以此来达到更可能的通用性. 这一节来 ...

最新文章

  1. 语义分割--RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation
  2. java swing button和键盘监听冲突问题
  3. 每日一皮:当我在处理别人的代码时...
  4. 虚拟化方案应用场景及优劣
  5. android 减少图片出现oom错误
  6. Python应用实战-Clumper | dplyr式的Python数据操作包
  7. 二进制文件签名_二进制数的签名表示
  8. table偏见和HTML仇外心理
  9. 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
  10. windows和linux如何通信,别总是把Windows和Linux混为一谈
  11. 操作 mysql 不生成日志_详解MySQL的日志
  12. Http第三方接口实现/异步Http请求
  13. lammps教程:nve/nvt/npt系综设置方法
  14. 电感升压(boost电路)感性理解
  15. java遍历文件夹_java中File类应用遍历文件夹下所有文件
  16. numpy.array函数详解
  17. 税法18个税种全总结附记忆小口诀
  18. 什么是CVE?常见漏洞和暴露列表概述
  19. WEKA算法开发——记一次不太成功的遗传属性加权贝叶斯算法实验
  20. 如何让XP系统能够访问Https

热门文章

  1. SQL SERVER 2012 AlwaysOn - 维护篇 03
  2. python第九天(9-33)
  3. ubuntu 安装过程所需软件
  4. 自己写的几个常用到的函数
  5. 团队项目第二次冲刺(4)
  6. javascript获取事件源对象和产生事件的对象
  7. text/html与text/plain的区别
  8. 一个application多个 URL
  9. C++之全局函数和成员函数的转换
  10. Spring4.0之四:Meta Annotation(元注解)