当前位置:首页 > 经验 >

srp什么梗

来源:原点资讯(m.360kss.com)时间:2023-06-28 06:56:59作者:YD166手机阅读>>

这是一个备受争议的原则,跟人吵架的时候这个是屡试不爽的一个梗。

为什么会备受争议呢?怎么就能吵起来呢?主要就是对职责如何定义,什么是类的职责,以及怎么划分类的职责。

​ 举个例子:我们新职课的老师对学生有很多的工作要做:例如了解个人信息、每天的学习情况、记录考勤;回答学 生问题,帮助解决bug,重难点串讲;行业经验分享等。

​ 如果将这些工作交给一位老师负责显然不合理,正确的做 法是现在我们新职课的模式:班主任负责日常工作,技术 辅导老师负责技术辅导;企业师傅负责行业经验分享等。

一、定义

单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规 定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason for a class to change)。

该原则提出对象不应该承担太多职责,如果一个对象承担了太多的职责,至少存在以下两个缺点:

(1)一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力;

(2)当客户端需要该对象的某一个职责时,不得不将其他不需要的职责全都包含进来,从而造成冗余代码或代码 的浪费。

二、举个例子

public interface IPhone{ //拨通电话 public void dial(String phoneNumber); //通话 public void chat(Object o); //通话完毕,挂断电话 public void hangup(); }

以上是符合单一职责原则的吗?说白了是一个接口只负责一件事情吗?是只有一个原因引起变化么?

​ 好像不是哦! 其实他负责了两个内容:1、协议管理,2、数据传送。

​ dial()和hangup()两个方法实现的是协议管理;chat()方法负责的是数据的传送

​ 那么协议的改变可能引起接口或者 实现类的变化;同样数据传送(电话不仅可以打电话,还能上网)的变化也可能会引起接口或实现类的变化。两个 原因都能引起变化,而两个职责直接是互不影响的,所以可以考虑拆分为两个接口。

public interface IPhone{ } public interface IConnectionManager extends IPhone{ //拨通电话 public void dial(String phoneNumber); //通话完毕,挂断电话 public void hangup(); } public interface IDataTransfer extends IPhone{ //通话 public void chat(IConnectionManager con); }

三、优点

单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。如果遵循单一职责原则将有以下优点。

  • 降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。
  • 提高类的可读性。复杂性降低,自然其可读性会提高。
  • 提高系统的可维护性。可读性提高,那自然更容易维护了。
  • 变更引起的风险降低。变更是必然的,如果单一职责原则遵守得好,当修改一个功能时,可以显著降低对其 他功能的影响。

单一职责原则是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,再封装到不同的类或模 块中。而发现类的多重职责需要设计人员具有较强的分析设计能力和相关重构经验。

PS:单一职责同样也适用于方法。一个方法应该尽可能做好一件事情。如果一个方法处理的事情太多,其颗粒度会 变得很粗,不利于重用。

但是原则是死的,人是活的。所以有些时候我们可以为了效率,牺牲一定的原则性。

栏目热文

pacificrim是什么梗(pacificrim属于什么音乐)

pacificrim是什么梗(pacificrim属于什么音乐)

环太平洋(Pacific Rim)包含着Kaiju与Mecha元素,kaiju是日本对未知大型异兽かいじゅう的翻译,此词...

2023-06-28 06:52:10查看全文 >>

OP是什么梗(惊呆了到底是什么梗)

OP是什么梗(惊呆了到底是什么梗)

世界第一个Virtual YouTuber——绊爱V圈常用术语1.vtuber(Virtual youtuber):最初...

2023-06-28 06:29:30查看全文 >>

和平精英黑曜怎么获得(和平精英中怎么才能得到黑曜石)

和平精英黑曜怎么获得(和平精英中怎么才能得到黑曜石)

欢迎诸位小伙伴们来到天哥开讲的《和平精英》“精英小课堂”~众所周知,从S1赛季至今的4年多里,这款游戏诞生了许多百万粉丝...

2023-06-28 06:43:53查看全文 >>

和平精英青龙麒麟朱雀怎么获得(和平精英青龙白龙朱雀玄武更新)

和平精英青龙麒麟朱雀怎么获得(和平精英青龙白龙朱雀玄武更新)

海岛四圣现身和平精英四圣降临模式今日火热上线了!四圣降临怎么玩?青龙、白虎、玄武、朱雀四个圣兽祭坛进入方法是怎样的?图腾...

2023-06-28 06:57:10查看全文 >>

和平精英怎么买火曜朱雀(和平精英火曜朱雀怎么免费获得)

和平精英怎么买火曜朱雀(和平精英火曜朱雀怎么免费获得)

大家好,欢迎来到由小鱼干开讲的《吃鸡新鲜事速报》,距离过年也越来越近了,玩家们过年除了能吃到许多好吃的,估计比较期待的就...

2023-06-28 06:56:55查看全文 >>

s.h.i.t是什么梗(so y o u问号是什么梗)

s.h.i.t是什么梗(so y o u问号是什么梗)

《JOJO的奇妙冒险》作为现在比较热门的一部动漫,每一部都能为我们贡献各种耳熟能详的JOJO梗,JOJO动漫的这些梗也是...

2023-06-28 07:02:06查看全文 >>

e.x.e是什么梗(e的e的是什么梗)

e.x.e是什么梗(e的e的是什么梗)

相信很多人在网络论坛上,常常会看到ex这个字眼,但是很多人第一次看到时并不知道,因此别人发的文(那种有很多ex)你根本看...

2023-06-28 06:23:12查看全文 >>

一个op十个梗

一个op十个梗

空耳一词来自日语,意为“幻听、听错”,是指将某种语言的影视或音乐作品的内容,以另一种语言的谐音重写,以达到恶搞或一语双关...

2023-06-28 06:26:26查看全文 >>

ile是什么梗(yap是什么梗中文)

ile是什么梗(yap是什么梗中文)

1. 单词清单:hail、ham、halve、haste、hasty、hamburger、hammer、hamper、h...

2023-06-28 06:19:32查看全文 >>

ruo是什么梗(ruo一声怎么读)

ruo是什么梗(ruo一声怎么读)

斗鱼主播火焰鼠山泥若,经常会有网友说他是SKT的,甚至在百度百科上面都有ruo在SKT的资料,甚至还有网友是ruo是sk...

2023-06-28 06:52:14查看全文 >>

文档排行