1 单一职责原则:

  单一职责就是发现软件设计中的不同职责,并把这些职责相互分离。比如代理模式中,验证交给代理完成,真实对象只需要关注自身的逻辑实现。见http://www.cnblogs.com/buptzlb/p/7595899.html  应用四

2 开放-封闭原则:

  是说软件实体(比如类,函数)应该可以扩展,但是不可修改。意思是,在不影响其他功能代码块功能的前提下,课增加代码。比如简单工厂设计中http://www.cnblogs.com/buptzlb/p/7593663.html,增加开放运算不会影响加减乘除,这就是开放的。

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

  举例:电脑内存不够用,直接加个内存条就好了。

  开放、封闭原则是面向对象设计的核心所在。

3 里氏替换原则:

  • 子类型必须能够替换掉他们的父类型。
  • 子类拥有父类的非private的行为和属性。

4 依赖倒转原则

  • 抽象不依赖于细节,细节要依赖抽象
  • 高层模块和底层模块都要依赖抽象
  • 要面向接口编程,而不是面向实现。

5 迪米特法则

  • 根本思想就是强调了类之间的松耦合。如果两个类不必须进行直接通信,那么要设计成松耦合,通过第三方(比如代理)去访问。
  • 为什么这么做?类之间的耦合越弱 ,越有利于复用,一个处于弱耦合的类被修改,不会对有关系的类造成波及

转载于:https://www.cnblogs.com/buptzlb/p/7593829.html

**设计模式中的常用原则相关推荐

  1. 设计模式中遵循的原则:单一职责、开发-封闭、依赖倒转

    设计模式中遵循的原则:单一职责.开放-封闭.依赖倒转 单一职责原则 一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这 ...

  2. 设计模式中的七大原则(代码 + 图解)

    文中涉及的代码:链接:提取码:tqjq 文章目录 设计模式 1. 目的 2. 分类 3. 原则 3.1单一职责原则 3.2 接口隔离原则 3.3 依赖倒转原则 3.4 里氏替换原则 3.5 开闭原则 ...

  3. 设计模式中的solid原则

    好的代码不只为了完成现有功能,也会考虑后续扩展. 在结构设计上松耦合易读易扩展,在领域实现上高内聚不对外暴露实现细节不被外部干扰. 在众多项目的锤炼和对程序设计的不断追求,多年编程历程提炼出来的心得体 ...

  4. ASP.NET 设计模式中依赖倒置原则

    依赖倒置原则 A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 依赖倒置原则 A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于 ...

  5. Java设计模式中的六大设计原则

    最近一直在看有关设计模式的博客和文章,发现自己对于设计模式的认识和理解还是有点浅显,于是想动手写博客巩固一下. 在开始阐述设计模式之前,首先介绍一下设计模式中的六大原则:      总原则-开闭原则 ...

  6. 软件设计中的一些原则

    本文为大家介绍软件设计中的一些原则,都是经过长期经验总结出来的知识,每一个程序员都应该了解,相信对大家在进行软件设计的过程中会有很大帮助. Don't Repeat Yourself (DRY) DR ...

  7. java常用代码解析_Java设计模式常用原则代码解析

    本篇文章小编给大家分享一下Java设计模式常用原则代码解析,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.单一职责原则每一个类负责一个职责(一个类只有 ...

  8. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

  9. 设计模式中必须知道的一些原则

    原则1:DRY(Don't repeat yourself) 即不要写重复的代码,而是用"abstraction"类来抽象公有的东西.如果你需要多次用到一个硬编码值,那么可以设为公 ...

最新文章

  1. iOS 没到年底NSDate 时间出错问题
  2. Solr Cache使用介绍及分析
  3. 51CTO学院三周年,一起成长与奋斗的日子
  4. python列表的索引算法_Python-确定列表是否对称的算法
  5. supervisor安装部署和使用实例
  6. 入门人工智能,我究竟该学些什么?
  7. spring mvc 实现单文件 || 多文件上传
  8. 《Web安全之机器学习入门》一 第3章 机器学习概述
  9. 时光手帐如何打印 时光手帐打印的方法
  10. Problem Solving(POJ-3265)
  11. mysql主从复制同步实验_db.mysql.主从同步实验
  12. 项目实战:DIY光驱激光雕刻机-激光切割机 (含制作步骤 实物 图纸 程序 上位机软件 )下载
  13. 申报表计算机代码是什么,金税盘的维护费在申报表上面有一个要填写减免性质代码怎么填啊 ?那个代码是什么呢?...
  14. 每台计算机需要配置网关吗,怎么设置一台电脑作为网关
  15. 解决移动浏览器不能正确转化时间
  16. 苹果系统 怎么找到共享计算机,Mac电脑怎么访问共享文件夹
  17. 〖毕业季|进击的技术er〗其他人都在缅怀青春、告诉你如何拿到 offer 、提高自己的技术栈、做未来规划路线,我偏要反其道而行、告诉你们一个不一样的技术er的职场成长。
  18. tfs java_Java SDK for TFS
  19. python调用 微信,向好友发送微博热搜榜
  20. Linux中常用命令

热门文章

  1. python图像文件压缩_python实现图片压缩代码实例
  2. Android日志[基础篇]二 Android Studio修改LogCat日志的颜色
  3. mysql 回滚段_MySQL和PostgreSQL比较
  4. java中unicode显示乱码_Java 已知Java系统编码是GBK,jtextarea从一编码为Unicode的文本中读取数据,出现乱码,怎么正常显示?...
  5. 我的世界java服务器刷_一个教程, 叫你如何在服务器刷op
  6. 输出一个整数的逆序数
  7. Android studio下载安装使用遇到的问题及解决办法
  8. mysql text类型 使用方法_MySQL使用TEXT/BLOB类型的知识点详解
  9. java怎么确定数据在区间内_处理数据时,单元格内内容太多无法计数怎么破?...
  10. java二维数组存储数据,从键盘上录入学生人数,考试科目数,以及每个学生每科分数,输出每个学生的最高分、最低分、总分、平均分