1.  单一职责原则

  定义:就一个类而言,应该仅有一个引起他变化的原因。

  如果一个类的职责太多,就等于把这些职责耦合到一起。一个职责的变化,可能会消弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

  软件设计真正要做的许多内容就是发现职责并把职责分离,如果你能够想到多余一个的动机去改变一个类,那么这个类就具有多余一个的职责。

2.  开放-封闭原则

  软件实体可以扩展,但是不可以修改。

  在最初编写代码时,先假设变化不会发生。当发生变化后,我们就创建抽象来隔离以后可能发生同类的变化。

   面对需求,程序的改动是通过增加新代码进行的,而不是更改现有的代码。

  拒绝不成熟的抽象和抽象本身一样重要。

3.  依赖倒转原则

  1、高层模块和底层模块都应该依赖抽象。

  2、细节也依赖抽象。

4.  里氏代换原则

  子类能够替换父类型。

  只有当子类可以替换掉父类,软件单位功能不受影响时,父类才能正真的被复用,而子类也能在父类的基础上正价新的行为。

  由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

  程序中所有的依赖关系都是终止于抽象类或者接口,就是面向对象的设计。

转载于:https://www.cnblogs.com/yangmingyu/p/6928277.html

设计模式笔记3:设计模式几大原则相关推荐

  1. 设计模式笔记(1)---开篇(文章索引)

    概念 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案. 面向对象的设计模式描述了面向对象设计过程中,在特定场景下类与相互通讯的对象之间常见的组织关系. 设计模式与面向对象 面向对象设计模 ...

  2. 【笔记】设计模式 | 5种设计模式笔记整理

    跟着b站的设计模式教程学的,以下是目前学习了的5种设计模式的笔记整理 设计模式简介 软件设计的现状:由于客户需求等原因需要频繁的变更软件内部的代码.所以能否设计出复用性尽可能高的程序以解决软件设计的复 ...

  3. Java设计模式笔记——七个结构型模式

    系列文章目录 第一章 Java设计模式笔记--七大设计原则 第二章 Java设计模式笔记--六个创建型模式 文章目录 系列文章目录 一.适配器模式 1.概念 2.类适配器 3.对象适配 4.缺省适配器 ...

  4. 软件设计师——设计模式笔记上

    软件设计师--设计模式笔记上(创造型5种) 设计模式的主要目的 设计模式的原则 1.工厂方法模式(类模式) 意图 适用性 代码实现 2.抽象工厂模式(对象模式) 意图 适用性 代码实现 3.生成器模式 ...

  5. 面试必问:设计模式遵循的面向对象设计原则!

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1.为什么需要设计模式 其实没有设计模 ...

  6. 设计模式中的开闭原则

    Table of Contents 1 设计模式中的开闭原则 1.1 基本原则 2 模式中的开-闭原则 2.1 策略模式 2.2 简单工厂 2.3 工厂方法 2.4 抽象工厂 2.5 建造者模式 2. ...

  7. Asp.net设计模式笔记之一:理解设计模式

    http://www.cnblogs.com/scy251147/p/3793547.html GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structu ...

  8. 设计模式(面向对象)设计的七大原则

    声明:本人设计模式模块是集合网上资料和老师课件总结的知识点,如本博客有侵权,本人即刻删. 设计模式(面向对象设计)原则,分别是: 1.开放封闭原则:对扩展开放,对修改关闭 2.单一职责原则:一个类只做 ...

  9. 『设计模式』--常见面向对象设计原则

    23种设计模式+额外常用设计模式汇总 (持续更新) 单一职责原则SRP(Single Responsibility Principle) 就一个类而言,应该仅有一个引起它变化的原因. 开放-关闭原则O ...

  10. 设计模式笔记零:设计模式简介

    原文:http://www.runoob.com/design-pattern/design-pattern-intro.html 少许个人理解,如有错误请指出 设计模式简介 设计模式:设计模式是软件 ...

最新文章

  1. Lidar激光雷达市场
  2. R - history
  3. Python3之redis使用
  4. ubuntu18.04换清华源
  5. 我加入一家硅谷骗子创业公司的奇葩经历
  6. Windows 7 延长支持服务价格曝光:一台电脑最低25美元
  7. html 清除浮动怎么写,清除浮动的css写法有哪些
  8. netty java开发文档_《Netty官方文档》设置开发环境
  9. TensorFlow在Anaconda环境下创建
  10. java怎么抛出异常_java中如何抛出异常使程序不中断(7)
  11. kubernetes发布tomcat服务,通过deployment,service布署
  12. PHP面向对象6之工具-魔术方法
  13. 毕设过程中使用WPS的自定义生成目录中混入图片等非相关元素
  14. 金融小知识 | Fama-Macbeth回归
  15. 从零开始ming的多人联机游戏(3)为socket通讯添加mysql数据库
  16. 我们为什么需要 DAO 操作系统?
  17. IAM统一身份认证服务
  18. 记录来到结算页面的客户
  19. vsCode保存后,浏览器不会刷新
  20. 对偶理论说明(深入理解)

热门文章

  1. 中小企业CRM评测-八百客
  2. java流行的测试框架调研+市面上书籍调研
  3. 这几年人工智能和大数据的真实就业规律
  4. datagrip建立新表的外键
  5. mysql8安装后初始化密码
  6. 让OpenCV2.4.9支持虚拟环境python3.5
  7. 天池大赛, Storm
  8. ORA-12170:TNS:连接超时
  9. Runnable和Thread基础---多线程学习笔记(二)
  10. ES6——举个例子理解Promise的原理和使用