设计模式中的六大基本原则

news/2024/11/24 8:46:00/

软件设计中的基本共识:

1,高内聚,低耦合:如果想使软件系统架构稳定,那么我们期望软件的各模块内元素结合的紧密,而模块之间的耦合度(关联性)越低越好。高内聚不仅体现在模块上,单独的类或方法也应该是内聚的。

2,面向抽象编程:面向过程开发中,上层组件调用下层组件,这意味着当下层发生剧烈变化时候,上层组件也得跟着一起变化,增加了维护成本。面向对象的设计中,我们努力使程序依赖抽象,而不去依赖具体实现,首先依赖抽象降低了模块间实现细节的耦合度,其次抽象变化的概率比较小,修改具体实现不影响其他模块,降低了风险成本,提升了软件结构的健壮性。

3,多用组合少用继承:组合和继承都是对已有属性和功能的复用,继承偏向于扩展,组合偏向于使用。组合的好处在于其方式更加灵活,不会对类造成危害,不会造成膨胀,同时减少了对父类的依赖。少用继承而不是不用继承,使用继承结构的代码可读性更高,一般认为继承结构不应该超过四层,而且应该谨慎的使用修饰符。

4,开闭原则:软件设计中主张“对扩展发放,对修改关闭”,该原则倡导我们对软件实体进行扩展时,尽量不要去修改原有的软件实体进行修改。

对以上共识具体化和规范化就有了设计模式的六大原则:

1,开闭原则:一个软件实体应该对扩展开放,对修改关闭。

2,单一职责原则:一个类应该应该只有一个引起他变化的原因。

3,依赖倒置原则:要依赖要抽象,而不是依赖具体实现。

4,接口隔离原则:使用多个隔离的接口,分离不同的接口行为,也就是说一个类对另外类的依赖性应该建立在最小接口上。

5,里氏替换原则:继承必须保证基类所拥有的性质在子类中仍然成立,即子类应当替换任何基类能够出现的地方。

6,迪米特法则:只和密友交谈。即一个软件实体应该尽可能少的于其他实体发生相互作用。

 

转载于:https://www.cnblogs.com/Oldz/p/10996760.html


http://www.ppmy.cn/news/608405.html

相关文章

CUDA 11功能清单

CUDA 11功能清单 基于NVIDIA Ampere GPU架构的新型NVIDIA A100 GPU在加速计算方面实现了最大的飞跃。A100 GPU具有革命性的硬件功能,CUDA 11与A100一起发布。 CUDA 11能够利用新的硬件功能来加速HPC,基因组学,5G,渲染&#xff0…

NVIDIA DGX SUPERPOD 企业解决方案

NVIDIA DGX SUPERPOD 企业解决方案 实现大规模 AI 创新的捷径 NVIDIA DGX SuperPOD™ 企业解决方案是业界首个支持任何组织大规模实施 AI 的基础架构解决方案。这一全套解决方案基于 NVIDIA DGX SuperPOD 参考架构搭建,专门面向需要快速实现 AI 创新的企业而设计&am…

大数据ELK(二十五):添加Elasticsearch数据源

文章目录 添加Elasticsearch数据源 一、Kibana索引模式 添加Elasticsearch数据源 一、Kibana索引模式 可以通过定义索引模式(Index Patterns)来对应匹配Elasticsearch索引。在第一次访问Kibana的时候,系统会提示我们定义一个索引模式。或者我们可以通过点击按钮,再点击…

-bash: fultter: command not found

flutter build apk bash: flutter: command not found 在studio中的控制台出现上面错误(如图所示) 解决办法: 安装flutter时,安装时可以执行flutter doctor -v ,当关闭黑窗口再次打开输入时,就出现 -bash: …

大数据ELK(二十六):探索数据(Discovery)

文章目录 探索数据(Discovery) 一、使用探索数据功能 二、导入更多的Apache Web日志数据 三、基于时间过滤查询 1、选择时间范围 2、指定查询某天的数据 3、从直方图上选择日期更细粒度范围 四、使用Kibana搜索数据 1、Kibana查询语言&#xff…

人工智能信息图

人工智能信息图 人工智能正在改变每一个行业,但是许多公司正在开始新业务。没有IT主导战略的旅程。 结果就是创新的筒仓,无法有效扩展。正确的人工智能基础设施战略吸引人才,整合资源,以及推动创新。 大规模人工智能对数据中心提…

大数据ELK(二十七):数据可视化(Visualize)

文章目录 数据可视化(Visualize) 一、数据可视化的类型 二、以饼图展示404与200的占比

Pass算子python 函数

Pass算子python 函数 函数 • 函数是代码的一种组织形式 • 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 • 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数,无返回结果的叫过程&…