首页 > 其他分享 >00-五个原则

00-五个原则

时间:2023-01-28 09:56:03浏览次数:57  
标签:00 原则 封闭 抽象 模块 五个 父类 变化

00-五个原则

单一职责原则

就一个类而言,应该仅有一个引起它变化的原因

开放-封闭原则

软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改(对扩展开放,对修改封闭;在生活中希望自己能够对快乐开放,)
开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所生成的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅针对程序中呈现出频繁变化的额哪些部分做出抽象,然而,对于应用程序中每个部分都可以进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样中央

这样的设计面对需求的改变才可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本。
无论模块是多么的"封闭", 都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对他设计的模块应该对那种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化
在最初编写代码时,假设变化不会发生。当变化发生时,就创建抽象来隔离以后发生的同类变化,即面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码
我们希望的是在开发工作展开不久就知道可能发生的变化。查明可能发生的变化所等待的时间越长,要创建正确的抽象就月困难

依赖倒转原则

抽象不应该依赖细节,细节应该依赖于抽象,说白了,就是要针对接口编程,不要对实现编程
高层模块不应该依赖低层模块。两个都应该依赖抽象
抽象不应该依赖细节,细节应该依赖抽象

里氏替换原则

子类型必须能够替换掉他们的父类型:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序行为没有变化。
正是由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

迪米特法则(LoD), 也叫最小知识原则

如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用

迪米特强调的是在类的结构设计上,每一个类都应当尽量降低成员的访问权限
类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及

标签:00,原则,封闭,抽象,模块,五个,父类,变化
From: https://www.cnblogs.com/Oh-mydream/p/17069683.html

相关文章

  • AX9000安装使用Docker
    固件更新  需将小米AX9000路由支持安装Docker,但正式版并没有该功能需更新为开发板Rom,直接在小米路由官网下载固件更新即可,当前正式版最新固件为1.0.165,开发板固件为:1.0.......
  • 0001-手机编程之Lua环境配置
    一、Lua应用场景游戏开发独立应用脚本Web应用脚本扩展和数据库插件如:MySQLProxy和MySQLWorkBench安全系统,如入侵检测系统教程采用AideLuaPro或AndLua+开发......
  • #0031. Educational Codeforces Round 1
    AB简单题C是计算几何,但核心解法很像sgnoi某年的t1,即与其考虑所有pairs,不如只考虑所有相邻的,这样复杂度就从\(O(N^2)\)降到了O(N)(如果不考虑排序的复杂度的话)。不过这......
  • windows2003 DHCP服务器配置
    一、导入光驱二、安装可选的windows组件  三、双击打开网路服务,安装DHCP/DNS服务器。 注:服务器地址要固定,因此安装时要规划好网络。四、ip地址范围规划时要预......
  • Solution of Implementation: P4003 无限之环 费用流建图究极代码简化
    Preface这是一篇费用流的辅助题解。关于建图的思路和构造,题解栏目中的内容可以说是非常的详尽。然而,这些题解几乎都对16种可能性一一建图,而且还要对源汇边分别写。这样......
  • 005 python 打开windows下的软件,python打开记事本 subprocess
    如果要用python代码打开windos上的记事本,代码如下:importsubprocessnotePro=subprocess.Popen('notepad.exe')print(notePro)如果要打开别的软件,则把notepad.exe......
  • 1~10000之间的所有对称数
    数组反转constfindPalindromeByReserveArray=()=>{constarr=[]for(leti=1;i<=10000;i++){conststr=String(i)const......
  • Windows 2008 + SQLServer 2008 双机群集
    SQLserver版本要求:标准版(2个节点),企业版(16个节点)安装前,先了解相关信息:​​SQLServer2008故障转移群集入门 ​​SQLServer2008 群集是基于Windows群集:​​Windows2......
  • Windows 2008 双机群集配置(for SQLServer)
    此处配置Windows2008群集,将用于SQLserver2008双机故障转移群集,此处SQLserver的群集基于Windows群集实现。Windows2008集群更容易实现了,只要规划好IP和磁盘分配,可一直......
  • windows2003 的安装以及安装时遇到的问题
    windows2003的安装以及安装时遇到的问题简介:WindowsServer2003是微软于2003年3月28日发布的基于WindowsXP/NT5.1开发的服务器操作系统,并在同年4月底上市。WindowsServ......