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

设计原则

时间:2023-11-17 17:23:38浏览次数:19  
标签:职责 原则 对象 修改 模块 耦合 设计

主要介绍面向对象六大原则中的单一职责原则(SRP)、开放封闭原则(OCP)、最少知识原则(LKP)。

设计原则是指导思想,从思想上给指明程序设计的正确方向,是在开发设计过程中应该尽力遵守的准则。而设计模式是实现手段,因此设计模式也应该遵守这些原则,或者说,设计模式就是这些设计原则的一些具体体现。要达到的目标就是高内聚低耦合,高内聚是说模块内部要高度聚合,是模块内部的关系,低耦合是说模块与模块之间的耦合度要尽量低,是模块与模块间的关系。

注意,遵守设计原则是好,但是过犹不及,在实际项目中不要刻板遵守,需要根据实际情况灵活运用

1. 单一职责原则 SRP

单一职责原则 (Single Responsibility Principle, SRP)是指对一个类(方法、对象,下文统称对象)来说,应该仅有一个引起它变化的原因。也就是说,一个对象只做一件事。
单一职责原则可以让对对象的维护变得简单,如果一个对象具有多个职责的话,那么如果一个职责的逻辑需要修改,那么势必会影响到其他职责的代码。如果一个对象具有多种职责,职责之间相互耦合,对一个职责的修改会影响到其他职责的实现,这就是属于模块内低内聚高耦合的情况。负责的职责越多,耦合越强,对模块的修改就越来越危险。

优点:降低单个类(方法、对象)的复杂度,提高可读性和可维护性,功能之间的界限更清晰; 类(方法、对象)之间根据功能被分为更小的粒度,有助于代码的复用;

缺点: 增加系统中类(方法、对象)的个数,实际上也增加了这些对象之间相互联系的难度,同时也引入了额外的复杂度。

2. 开放封闭原则 OCP

开放封闭原则 (Open-Close Principle, OCP)是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的,也就是对扩展开放,对修改封闭。

当需要增加需求的时候,则尽量通过扩展新代码的方式,而不是修改已有代码。因为修改已有代码,则会给依赖原有代码的模块带来隐患,因此修改之后需要把所有依赖原有代码的模块都测试一遍,修改一遍测试一遍,带来的成本很大,如果是上线的大型项目,那么代价和风险可能更高。

优点:增加可维护性,避免因为修改给系统带来的不稳定性。

3. 最少知识原则 LKP

最少知识原则 (Least Knowledge Principle, LKP)又称为迪米特原则 (Law of Demeter, LOD),一个对象应该对其他对象有最少的了解。
通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,类的内部如何实现、如何复杂都与调用者或者依赖者没关系,调用者或者依赖者只需要知道他需要的方法即可,其他的一概不关心。类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。
通常为了减少对象之间的联系,是通过引入一个第三者来帮助进行通信,阻隔对象之间的直接通信,从而减少耦合。

优点:降低类(方法、对象)之间不必要的依赖,减少耦合。

缺点:类(方法、对象)之间不直接通信也会经过一个第三者来通信,那么就要权衡引入第三者带来的复杂度是否值得。

标签:职责,原则,对象,修改,模块,耦合,设计
From: https://www.cnblogs.com/wp-leonard/p/17839233.html

相关文章

  • 浅谈 RBAC 权限系统设计
    方案设计在实际业务中,权限系统的设计其实可以做到很复杂,但是为了简单起见只保留一些最基本且核心的模块:登录模块:权限平台一般需要靠登录获取用户身份,并通过凭证去请求接口,包括注册功能。系统管理模块:包括用户管理、角色管理、菜单管理(如果菜单是前端控制则可以省略)等功能,是权......
  • 矢量图设计软件Sketch,专为Mac用户打造
    Sketch是一款专门为Mac用户设计的矢量图设计软件,它拥有简洁直观的界面和强大的功能,使得用户能够轻松地创建和编辑各种矢量图设计。点击获取Sketch首先,Sketch具有强大的矢量图编辑功能。它支持多种矢量图形元素,如线条、矩形、椭圆、多边形等,并允许用户对这些元素进行各种操作,如......
  • SRE方法论之监控设计
    监控的4个黄金指标《SRE:Google运维解密》中提出,监控系统的四个黄金指标是:延迟(Latency)、流量(Traffic)、错误(Errors)、饱和度(Saturation。延迟:服务处理某个请求所需要的时间。在微服务中通常提倡快速失败,服务不要憋着,这些延迟请求要尽快反馈给开发人员分析,这些缓慢的错误会消耗系统......
  • 学期2023-2024-1 20231416《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第八周作业这个作业的目标《计算机科学概论》第9章《C语言程序设计》第7章并完成云班课测试,功能设计与面向对象设计,面向对象设计过程,面向对象语言三......
  • 敲敲云与简道云流程设计引擎对比:选择更适合您的产品
    在当今数字化时代,流程管理和自动化变得越来越重要。作为APaaS服务的两个知名产品,敲敲云和简道云都提供了流程设计引擎,帮助企业实现高效的流程管理。然而,在比较两者之后,您可能会发现敲敲云在多个方面具有优势,以下是对敲敲云的几个突出优点的介绍:多种流程触发方式:敲敲云的流程设计......
  • SOLIDWORKS参数化设计之主参数设置
    SOLIDWORKS参数化设计是通过主参数来驱动整个模型的变化,因此确定主参数是很重要的部分。主参数可以是数值,也可以是条件,可以手动输入,也可以做成下拉列表。今天我们就来看看主参数的下拉列表是如何做到的。SolidKits.AutoWorks软件的参数表是外置参数表,使用软件提取所有参数后,可以......
  • 软件设计模式学习每日总结-第五天
    第五天学习原型模式:复制创建新 浅克隆:复制对象.深克隆:复制对象及其成员。 ......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记10
    学习笔记块与I/O缓冲区I/O缓冲区管理算法比较实践过程块与I/O缓冲区块设备1.定义:块设备是一种数据存储设备,其数据以块为单位进行读写。块通常是一个固定大小的数据块,比如512字节或4KB。2.示例:硬盘驱动器、固态硬盘、光盘等都是块设备的例子。3.特点:数据以块为单位传......
  • 设计模式(十三)职责链
    一、定义避免将一个请求的发送者与接受者耦合在一起,让多个对象都有机会接受请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止。职责链模式是一种行为型模式二、描述职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型......
  • Java设计模式之组合模式
    在某些情况下,我们需要处理一组对象,这些对象之间具有整体-部分的关系,我们希望能够以一致的方式处理单个对象和对象组合,而不需要对它们进行特殊处理。组合模式的解决方案是将对象组合成树状结构,其中树的节点可以是单个对象或对象组合。这样无论是操作单个对象还是对象组合,都可以使用......