首页 > 其他分享 >设计原则

设计原则

时间:2022-08-17 20:00:57浏览次数:74  
标签:中文 原则 abstractions should 模块 设计 描述

学习了好几遍的设计模式,为了防止自己遗忘,做一下笔记,总结一下,自己学习过的设计模式,如果有什么错误,敬请谅解。

单一职责原则

描述:A class or module should have a single responsibility
中文:一个类或者模块只负责完成一个职责(或者功能)。
注意,这个原则描述的对象包含两个,一个是类(class),一个是模块(module)。关于这两个概念,在专栏中,有两种理解方式。一种理解是:把模块看作比类更加抽象的概念,类也可以看作模块。另一种理解是:把模块看作比类更加粗粒度的代码块,模块中包含多个类,多个类组成一个模块。

开闭原则

描述:software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification.
中文:软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”。
这个描述比较简略,如果我们详细表述一下,那就是,添加一个新的功能应该是,在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)。

里氏替换原则

描述:Functions that use pointers of references to base classes must be able to use objects of derived classes without knowing it.
中文:子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。

接口隔离原则

描述:Clients should not be forced to depend upon interfaces that they do not use。
中文:客户端不应该被强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者.

依赖反转原则

描述:High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. In addition, abstractions shouldn’t depend on details. Details depend on abstractions.
中文:高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过抽象(abstractions)来互相依赖。除此之外,抽象(abstractions)不要依赖具体实现细节(details),具体实现细节(details)依赖抽象(abstractions)

KISS 原则

描述:Keep It Simple and Stupid.
中文:尽量保持简单。

YAGNI 原则

描述:You Ain’t Gonna Need It
中文:你不会需要它
这条原则的核心思想就是:不要做过度设计.

DRY 原则

描述:Don’t Repeat Yourself。
中文:不要重复自己,理解为:不要写重复的代码.

迪米特法则

描述:Each unit should have only limited knowledge about other units: only units “closely” related to the current unit. Or: Each unit should only talk to its friends; Don’t talk to strangers.
中文:每个模块(unit)只应该了解那些与它关系密切的模块(units: only units “closely” related to the current unit)的有限知识(knowledge)。或者说,每个模块只和自己的朋友“说话”(talk),不和陌生人“说话”(talk)。

先把所有的法则写在这里,接下来我总结各种模式的时候,在总结一下各种模式满足了什么原则!

推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器
音视频
dpdk
Linux内核

标签:中文,原则,abstractions,should,模块,设计,描述
From: https://www.cnblogs.com/wenlong-4613615/p/16596242.html

相关文章

  • 23设计模式 24 visitor 访问者模式
      有这样一种情况,看一个视频  用户分   normal, VIP,SVIP   abstract User {}Normal:UserVIP:UserSVIP :User  在子类中override User......
  • 本周四晚19:00知识赋能第七期第2课丨OpenHarmony WiFi扫描仪UX设计
    8月18日19:00~20:00,第七期知识赋能第二节直播就要开始啦!如果你是缺乏实战经验的学生,如果你是初出茅庐的职场新人,如果你是想参与开源的贡献者,那么本期的直播课将不容错过!通......
  • 《Linux内核设计的艺术》——3.进程1
    0.前言现在已经有了处于特权3的进程0,将使用fork出进程1,之后的进程也使用fork。voidmain(){sti();move_to_user_mode();//切换到特权3if(!fork()){......
  • 里氏转换原则
    六大原则如下:①单一职责原则;②开闭原则;③里氏转换原则;④依赖倒置原则;⑤接口隔离原则;⑥迪米特原则;里氏转换原则①子类对象可以直接赋值给父类变量;②子类转换成......
  • 架构设计基础设施保障IaaS之计算篇
    IaaS之计算1.1IaaS概述IaaS(InfrastructureasaService)提供托管的IT基础架构,供用户调配处理能力、存储、网络和其他基础计算资源。IaaS提供商运行并管理此基础架......
  • 设计ShaderGraph
    清理过程MaterialCustomPara首先是材质的参数,MaterialCustomPara,作为基类,它只有一个着色器参数名字。CustomFloatValue然后是CustomFloatValue,作为MaterialCustomPar......
  • 2022“杭电杯”中国大学生算法设计超级联赛(9)
    赛后总结:不太理解为什么都这么强,1008是一道欧拉函数变形,我用莫比乌斯反演推出了一样的式子,实际上两个1e7的数的质数集合的并最多只有12个,那么暴力按照式子2^12枚举每个质......
  • 2022“杭电杯”中国大学生算法设计超级联赛(7)
    比赛链接:https://vjudge.net/contest/509567B-IndependentFeedbackVertexSet题意:定义无向无环图为森林,集合中任意两点之间没有边相连的集合为独立集。现在有\(n......
  • 项目设计之数据库字段一点建议
    java项目数据表字段设计,方案1、表名_字段名,字段下划线隔开,如学校,数据库:school_id,school_name,对应类属性:schoolId,schoolName;学生中使用对应字段和属性。2、表名字段名,字......
  • zemax光学设计笔记[5]-ZPL或ZOS-API的使用(未完待续)
    zemax的编程功能简介Anapplicationprogramminginterface(ZOS-API)hasbeendevelopedforOpticStudiothatenablesconnectionsto,andcustomizationof,thea......