加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

单一职责原则--SRP

发布时间:2020-12-14 05:44:11 所属栏目:百科 来源:网络整理
导读:? 一、SRP简介( SRP--Single-Responsibility Principle ): 就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。 ? 所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你

?

一、SRP简介(SRP--Single-Responsibility Principle):
就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。
?
所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的职责的变化
“就像一个人身兼数职,而这些事情相互关联不大,,甚至有冲突,那他就无法很好的解决这些职责,应该分到不同的人身上去做才对。”
?
二、举例说明:
违反SRP原则代码:?
modem接口明显具有两个职责:连接管理和数据通讯;

interface Modem
{
??? public void dial(string pno);
??? public void hangup();
??? public void send(char c);
??? public void recv();
}
?
如果应用程序变化影响连接函数,那么就需要重构:
interface DataChannel
{
??? public void send(char c);
??? public void recv();
}
interface Connection
{
??? public void dial(string pno);
??? public void hangup();
}
?
三、SRP优点:
消除耦合,减小因需求变化引起代码僵化性臭味

?
四、使用SRP注意点:
1、一个合理的类,应该仅有一个引起它变化的原因,即单一职责;?2、在没有变化征兆的情况下应用SRP或其他原则是不明智的;?3、在需求实际发生变化时就应该应用SRP等原则来重构代码;?4、使用测试驱动开发会迫使我们在设计出现臭味之前分离不合理代码;?5、如果测试不能迫使职责分离,僵化性和脆弱性的臭味会变得很强烈,那就应该用Facade或Proxy模式对代码重构;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读