ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设计原则

2022-08-17 20:00:54  阅读:143  来源: 互联网

标签:中文 原则 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,模块,设计,描述
来源: https://www.cnblogs.com/wenlong-4613615/p/16596242.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有