五大基本原则
单一职责原则SRP(Single Responsibility Principle)
是指一个类的功能要单一,不能包罗万象。
开放封闭原则OCP(Open-Close Principle)
一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的。
比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码
这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。
替换原则(the Liskov Substitution Principle LSP)
子类应当可以替换父类并出现在父类能够出现的任何地方。
比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。
依赖原则(the Dependency Inversion Principle DIP)
具体依赖抽象,上层依赖下层。
假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:  这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。
通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能造成循环依赖。  
接口分离原则(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来

转载于:https://www.cnblogs.com/zuixinxian/p/11276363.html

【面向对象设计的5个原则】相关推荐

  1. 面向对象设计领域的OCP原则

    一.OCP简介(OCP--Open-Closed Principle ): Software entities(classes,modules,functions,etc.) should be op ...

  2. 面向对象设计的5个原则

    原文转载自:http://www.cnblogs.com/feipeng/archive/2007/03/02/661840.html 将内容整理总结了一下,方面大家学习. 面向对象的3个基本要素:封 ...

  3. 面向对象设计的10个原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  4. 面向对象设计的11项原则

    主要5大原则 (1)单一责任原则.就一个类而言,应该仅有一个引起它变化的原因.即,当需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任. (2)开放一封闭原则.软件实体(类.模块.函数等) ...

  5. 面向对象设计之单一职责原则(Simple-Responsibility Principle)

    单一职责原则: 一个类只负责一个功能领域中的相应职责,即就一个类而言,应该只有一个引起它变化的原因.  好处: 降低类的复杂度,一个类只负责一项职责,其逻辑肯定比负责多项职责简单的多 复杂度低,可读性 ...

  6. 对面向对象设计原则的总结

    正如牛顿三大定律在经典力学中的位置一样,"开-闭"原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的 ...

  7. 面向对象设计的重要原则:SOLID

    SOLID是面向对象设计5大重要原则的首字母缩写: 1.单一职责原则(SRP) 2.开放封闭原则(OCP) 3.里氏替换原则(LSP) 4.接口隔离原则(ISP) 5.依赖倒置原则(DIP) 下面具体 ...

  8. 面向对象设计六大基本原则

    目录 单一职责原则 开闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 单一职责原则 本篇开始介绍面向对象设计思想 单一职责原则,Single Responsibility Princip ...

  9. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP

    其他面向对象设计原则3: 依赖倒置原则DIP  The Dependency Inversion Principle 7.1 依赖倒置原则DIP The Dependency Inversion P ...

最新文章

  1. C++的cout高阶格式化操作
  2. oracle 启动监听报错TNS-12547: TNS:lost contact
  3. python集合运算_Python 集合set()添加删除、交集、并集、集合操作详解
  4. 转 C++宏定义详解
  5. AttributeError: 'module' object has no attribute 'version'
  6. Xshell调节字体大小和样式
  7. java删除指定文件_java删除指定目录下指定格式文件的方法
  8. 高质量C /C编程指南---第1章 文件机关
  9. haproxy配置代理tomcat和nginx_Nginx负载均衡配置实例
  10. 计算机毕业设计ssm+sqlserver房屋租赁管理系统
  11. 6.通信原理 ——数字基带传输系统(第七版 樊昌信 曹丽娜编著)
  12. CefSharp实战演示
  13. 基于SSM的客房预订系统的设计与实现
  14. Qt---随机数生成器
  15. python十六进制去掉0x_如何将一个整数转换为十六进制而在Python中没有多余的'0x'前导和'L'尾随字符?...
  16. 【GlobalMapper精品教程】004:生成标准经纬网图幅(1:100万)案例教程
  17. 前端图像处理之马赛克
  18. redis数量计算(统计访问量等等)
  19. 瓜子智能在线客服整体架构
  20. 数仓02-从0到1设计和搭建

热门文章

  1. 天了噜,我国4G用户超过2亿了!
  2. win7下vs2008如何进行注册?
  3. 终于把结婚照片做成了MTV
  4. Model-Based RL前沿追踪——以无法为有法,以无形为有形
  5. 百度发起遥感图像农作物识别大赛—8.5万总奖池邀你建设“美丽乡村”
  6. php msi安装教程,如何判断msi安装包程序是否安装及安装路径
  7. 本硕985非科班渣硕2020腾讯计算机视觉算法实习面经(已获Offer)
  8. 2018值得一看的GAN论文回顾
  9. ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法
  10. 面向小姐姐的编程——JAVA面向对象之封装(一)