面向对象设计原则之单一职责原则 ゞ 浴缸里的玫瑰 2022-06-08 04:28 162阅读 0赞 单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下: <table style=""> <tbody> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> <strong>单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。</strong></p> </td> </tr> </tbody> </table> 单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。 **单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则**,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关实践经验。 下面通过一个简单实例来进一步分析单一职责原则: <table style=""> <tbody> <tr> <td> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> Sunny软件公司开发人员针对某CRM(Customer Relationship Management,客户关系管理)系统中客户信息图形统计模块提出了如图1所示初始设计方案:</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> <img alt="" src="https://img-my.csdn.net/uploads/201205/05/1336147233_3529.jpg" width="294" height="163" style="border:none; max-width:100%; width:234px; height:126px"></p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 图1 初始设计方案结构图</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 在图1中,CustomerDataChart类中的方法说明如下:getConnection()方法用于连接数据库,findCustomers()用于查询所有的客户信息,createChart()用于创建图表,displayChart()用于显示图表。</p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> 现使用单一职责原则对其进行重构。</p> </td> </tr> </tbody> </table> 在图1中,CustomerDataChart类承担了太多的职责,既包含与数据库相关的方法,又包含与图表生成和显示相关的方法。如果在其他类中也需要连接数据库或者使用findCustomers()方法查询客户信息,则难以实现代码的重用。无论是修改数据库连接方式还是修改图表显示方式都需要修改该类,它不止一个引起它变化的原因,违背了单一职责原则。因此需要对该类进行拆分,使其满足单一职责原则,类CustomerDataChart可拆分为如下三个类: (1) DBUtil:负责连接数据库,包含数据库连接方法getConnection(); (2) CustomerDAO:负责操作数据库中的Customer表,包含对Customer表的增删改查等方法,如findCustomers(); (3) CustomerDataChart:负责图表的生成和显示,包含方法createChart()和displayChart()。 使用单一职责原则重构后的结构如图2所示: ![1336147240_4896.jpg][] 图2 重构后的结构图 【作者:刘伟 [http://blog.csdn.net/lovelion][http_blog.csdn.net_lovelion]】 [1336147240_4896.jpg]: https://img-my.csdn.net/uploads/201205/05/1336147240_4896.jpg [http_blog.csdn.net_lovelion]: http://blog.csdn.net/lovelion
相关 面向对象设计原则Java实现:单一职责原则 单一职责原则(SRP)是面向对象设计中的一个重要原则。这个原则指出,一个类(或模块)应该有且只有一个主要的责任。 以下是一个Java实现单一职责原则的例子: ```java 缺乏、安全感/ 2024年09月19日 21:42/ 0 赞/ 2 阅读
相关 面向对象设计原则:单一职责原则(SRP)实例 单一职责原则(SRP)是一种编程和软件设计原则,它要求一个类或模块只负责一项特定的任务。 实例: 1. **数据库操作类**: - 如果这个类负责了连接数据库、执行查 青旅半醒/ 2024年09月10日 13:21/ 0 赞/ 25 阅读
相关 面向对象的原则之单一职责原则 单一职责原则(Single Responsibility Principle, SRP): > 一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只 淩亂°似流年/ 2022年09月26日 04:56/ 0 赞/ 126 阅读
相关 面向对象设计原则(一):单一职责原则(SRP) 面向对象设计原则(一):单一职责原则(SRP) > 单一职责原则(Single responsibility principle,SRP)是面向对象设计(OOD 今天药忘吃喽~/ 2022年07月10日 04:20/ 0 赞/ 160 阅读
相关 面向对象设计原则之单一职责原则 单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下: <table style=""> <tbody> <tr> <td ゞ 浴缸里的玫瑰/ 2022年06月08日 04:28/ 0 赞/ 163 阅读
相关 设计原则之单一职责原则 前言:暑假匆匆过了一边Java的设计模式,现在来系统总结一下。毕竟写Java程序不懂设计模式根本就是瞎扯,并且懂了设计模式学一些框架也更加快嘛,要知道里面可是设计模式满天飞。 小咪咪/ 2022年06月05日 04:59/ 0 赞/ 193 阅读
相关 面向对象的五大设计原则之单一职责原则 我们都知道,面向对象是一种高度抽象的思维,我们在面向对象设计中,类是最基本的单位,我们的各种设计都是围绕着类来进行的,可以这么说,类与类之间的关系,构成了设计模式的大部分内容, 拼搏现实的明天。/ 2022年04月13日 07:42/ 0 赞/ 166 阅读
相关 设计原则之单一职责原则(SRP) [为什么80%的码农都做不了架构师?>>> ][80_] ![hot3.png][] 简介 单一职责原则是最重要的设计原则,也是最抽象的设计原则。小到函数,大到平台的 傷城~/ 2022年01月17日 12:25/ 0 赞/ 288 阅读
相关 设计原则:单一职责原则 单一职责原则(SRP) 单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。这个原则的英文描述是这样的:A class 忘是亡心i/ 2021年09月21日 14:00/ 0 赞/ 381 阅读
还没有评论,来说两句吧...