1.依赖倒置原则(DIP)
高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定);
抽象不应该依赖于实现细节(变化),实现细节应该依赖于抽象;

2.开放封闭原则(OCP)
对扩展开放,对修改封闭;

3.单一职责原则(SRP)
一个类应该仅有一个引起变化的原因;
变化的方向隐含着类的责任;

4.Liskov替换原则(LSP)
子类必须能够替换他们的基类;
继承表达类型抽象;

5.接口隔离原则
不应该强迫客户程序依赖他们不用的方法;

6.优先使用对象组合,而不是类继承
类继承通常为“白箱复用”,对象组合通常为“黑箱复用”;
继承在某种程度上破坏了封装性,子父类耦合度较高

7.封装变化点
使用封装来创建对象之间的分界层,让设计者能够从分界层的一侧进行修改,而不会对另一侧产生影响

8.针对接口编程,而不是针对实现编程
不将变量类型声明为某个具体类型,而是声明为某个接口;
客户程序无需知道对象的具体类型,只需要知道对象所具有的接口;
减少系统中各部分的依赖关系,从而实现高内聚,低耦合的类型设计方案;

面向对象的八大设计原则相关推荐

  1. C++设计模式的设计原则(面向对象八大设计原则)

    面向对象设计八大设计原则 一.温故面向对象 二.八大设计原则 三.以史为鉴    先掌握八大设计原则,再详细看23种设计模式(

  2. 转:软件设计漫谈之三:30分钟掌握面向对象类的设计原则

    转自:http://blog.csdn.net/yunhua_lee/article/details/5105524 30分钟掌握面向对象类的设计原则 看过设计模式的人不少,但看过Martin的面向对 ...

  3. 【0718作业】收集和整理面向对象的六大设计原则

    面向对象的六大设计原则 (1)单一职责原则--SRP (2)开闭原则--OCP (3)里式替换原则--LSP (4)依赖倒置原则--DIP (5)接口隔离原则--ISP (6)迪米特原则--LOD - ...

  4. 面向对象思想的设计原则概述

    在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象思想的设计原则. 单一职责原则核心思想:其实就是开发人员经常说的"高内聚"(自己能做的,不麻烦别人) ...

  5. 面向对象编程,设计原则,设计模式

    2019独角兽企业重金招聘Python工程师标准>>> 面向对象编程,设计原则,设计模式 面向对象编程 面向对象编程与面向过程编程的区别 面向对象软件开发的优点 面向对象编程语言 C ...

  6. Java面向对象7大设计原则讲解

    面向对象程序设计是当今主流的程序设计范型,已经取代了早期的"结构化"过程化程序设计开发技术,java是完全面向对象的计算机语言,要使用面向对象式来设计java程序. 学习Java肯 ...

  7. 关于面向对象的的设计原则的使用

    关于面向对象的原则,相信大家都很清楚.但真正使用时,我想我们都会违反一些原则,因为要遵守这些原则,我们必须要多写好多代码.最后得不尝试. 下面我就关于这些原则发表一下个人的看法: 一.单一职责原则   ...

  8. 面向对象的几大设计原则

    对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一.在面向对象设计中,可维护 ...

  9. 移动产品设计的八大设计原则

    移动设备由于受屏幕大小.网络速度等因素的影响,也衍生出特有的设计原则,来满足用户的行为习惯,促进产品易用.这是@阿乖设计 在@知乎 上带来的八条原则,作者用了大量的案例来佐证观点.一起看看这些技巧你是 ...

最新文章

  1. java基础===点餐系统
  2. 75分钟入门微生物组数据分析和结果解读—刘永鑫(合肥,2021年6月23日)
  3. js_Event Loop(笔记)
  4. 让Vagrant在Windwos下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题
  5. JS——“==”与“===”
  6. 新的Google Lyra音频编解码器对实时视频流意味着什么?
  7. 阿里云张献涛:自主最强DPU神龙的秘诀
  8. linux iscsi软件,linux iscsi软件环境搭建
  9. 将Entity Framework Core v5.0移至单独的项目
  10. 分享OUTLOOK的定时发送功能
  11. linux修改数据库密码出现的问题吗,关于linux下mysql修改root密码时遇到的问题
  12. var模型可以用spss做吗_求:如何用SPSS做VAR模型?
  13. python统计分析-卡方分析和方差分析
  14. 视频转换生成二维码,扫码直接播放,在线制作,一键上传
  15. mysql24div13_第七次codeforces竞技结束 #258 Div 2
  16. 如何在输入特殊符号,例如角度“∠”
  17. 基于android的计步器文档,基于Android的计步器(Pedometer)的讲解(六)
  18. 国产数据库产品介绍以及实践
  19. 东北话编程,大写的服!这是一个丧心病狂的Github项目!
  20. Ubuntu系统下NS-3安装与工具配置

热门文章

  1. Android闹钟拓展版【安卓闹钟可换壁纸版】
  2. 软件产品设计:学习与未来发展
  3. matlab谐振电路仿真,基于Matlab的LC并联谐振回路的建模与仿真
  4. [win7]设置登录密码
  5. 实验十(课程资源)-DNS服务器配置与管理
  6. 职业规划:兴趣不是挡箭牌,关键是要找到你的成就动机
  7. 《雪国列车》逼韦恩斯坦妥协 英美将播未删减版
  8. 如何将阿里巴巴矢量图标转变为文字形态
  9. python map出错:map object at 0x0000000002B35588
  10. asp和mysql分页代码