- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Solid约碍则
Solid 原则
基本概念
程序设计领域, SOLID (单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特•C•马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能SOLID被典型的应用在测试驱动开发上,并且是敏捷开发以及自适应软件开发的基本原则的重要组成部分。
Solid
S 单一功能原则 :单一功能原则 认为对象应该仅具有一种单一功能的概念。
Solid
O 开闭原则 :开闭原则 认为“软件体应该是对于扩展开放的,但是对于修改封闭的”的概念。
SOLID
L 里氏替换原则 :里氏替换原则 认为“程序中的对象应该是可以在不改变程序正确性的前提下被它的子类所替换的”的概念。
SOLID
I 接口隔离原则 :接口隔离原则 认为“多个特定客户端接口要好于一个宽泛用途的接口”的概念。
SOLID
D 依赖反转原则: 依赖反转原则 认为一个方法应该遵从“依赖于抽象而不是一个实例” 的概念。依赖注入是该原则的一种实现方式。
单一功能原则的讨论
当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE)。换句话说就是让一个类只做一种类型责任,当这个类需要承担其他类型的责任的时候,就需要分解这个类。在所有的SOLID原则中,这是大多数开发人员感到最能完全理解的一条。严格来说,这也可能是违反最频繁的一条原则了。单一责任原则可以看作是低耦合、高内聚在面向对象原则上的引申,将责任定义为引起变化的原因,以提高内聚性来减少引起变化的原因。责任过多,可能引 起它变化的原因就越多,这将导致责任依赖,相互之间就产生影响,从而极大的损伤其内聚性和耦合度。单一责任,通常意味着单一的功能,因此不要为一个模块实 现过多的功能点,以保证实体只有一个引起它变化的原因。
本原则的应用:
Unix/Linux是这一原则的完美体现者。各个程序都独立负责一个单一的事。
Windows是这一原则的反面示例。几乎所有的程序都交织耦合在一起。
另外举个例子:报表的内容和报表的格式都会变化改变,但是这两种变化的性质不同,一个是实质内在,一个是表面上的,SRP认为这是问题的两个方面, 其实代表不同的责任,应该将它们分离放入不同的类或模块中,而不应该放在一起,否则的话,因为不同原因发生变化,导致对方变动,比如报表格式变新的样式, 这个变化是不应该涉及到内容的。
开闭原则的讨论
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象、最难理解的一个。
对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。
可以使用变化和不变来说明:封装不变部分,开放变化部分,一般使用接口继承实现方式来实现“开放”应对变化,说大白话就是:你不是要变化吗?,那么我就让你继承实现一个对象,用一个接口来抽象你的职责,你变化越多,继承实现的子类就越多。
开闭原则的讨论
OCP的要点在于:作为开发人员,别人偶尔会向我们提供基类,偶尔也会为其他开发人员生成基类框架,供其使用。这些使用者应当仅能使用这些基类,但 不能对其进行修改。这一点是必要的,因为其他使用者也可能依赖于由基类提供的功能。如果允许使用者修改这些基类,可能会导致连锁反应,不仅会影响到应用程 序中的各方面,还会影响到企业内的应用程序。还有一个问题,使用者有时可能会收到基类的升级版本。使用者在升级之前,必须找出一种方法用来处理其对该基类 先前版本中所做的自定义。
于是,问题变为:那么,如果我需要修改这个基类的工作方式,那应当怎么做呢?OCP的另一部分中给出这一答案;基类应当开放,可进行扩充。在这里,扩充是指创建一个由此基类继承而来的派生类,它可以扩充或重载基类功能,以提供使用者所需要的特定功能。这样,使用者就能使用类的修改版本,而不会影响到类的其他使用者。使用者还可以在将来更轻松地使用基类的升级版本,因为他们不用担心丢失自己的修改内容。
本原则的应用:
对于面向对象来说,需要你依赖抽象,而不是实现,23个经典设计模式中的“策略模式”就是这个实现。对于非面向对象编程,一些API需要你传入一个你可以扩展的函数,比如我们的C语言的qsort()允许你提供一个“比较器”,STL中的容器类的内存分配,ACE中的多线程的各种锁。对于软件方面,浏览器的各种插件属于这个原则的实践。
里氏替换原则的讨论
软件工程大师Robert C. Marti
您可能关注的文档
- CRRT理及论知识培训.pptx
- CSS页眉版外观设计与布局.ppt
- CRRT管及路管理与护理.ppt
- Ctherm及odynamicsofphasetransformation.ppt
- CuiQu菁巴取.ppt
- CVVH滤及过率和滤过分数.ppt
- C动物导澳生殖和个体发育.ppt
- C时电郊扳质水溶液的摩尔电导率.ppt
- C羧酸技鞍其衍生物.ppt
- DARTS始暗时软件分析设计方法.ppt
- DeepSeek培训课件入门宝典:第2册 开发实战篇 .pptx
- 全面认识全过程人民民主-2024春形势与政策课件.pptx
- 2024春形势与政策-全面认识全过程人民民主.pptx
- 2025年春季学期形势与政策第二讲-中国经济行稳致远讲稿.docx
- 2024春形势与政策-铸牢中华民族共同体意识课件.pdf
- 2024春形势与政策-走好新时代科技自立自强之路课件 (2).pptx
- 2024春形势与政策-走好新时代科技自立自强之路课件.pptx
- 形势与政策学习指导教学-整套课件.pdf
- 2023年春季形势与政策讲稿第三讲-开创高质量发展新局面.pdf
- DeepSeek培训课件-清华大学-DeepSeek模型本地部署与应用构建.pptx
最近下载
- 2022年南昌交通学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
- 卡乐控制器PCO控制器说明.docx VIP
- 光伏玻璃研制及其工艺浅析.pdf VIP
- 企业质量环境职业健康安全管理体系内部审核报告QES.pdf VIP
- 2024年高考物理真题汇编(19套).docx
- 2024年濮阳职业技术学院单招职业技能测试题库及答案一套.docx VIP
- [江苏]2025年专利协作江苏中心招聘专利员130人笔试历年参考题库(频考点试卷)解题思路附带答案详.docx VIP
- 正泰变频器NVF2G变频器说明书使用手册.pdf
- 地下车位转让合同_地下车位转让合同格式.docx VIP
- 2023年南昌交通学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
文档评论(0)