应用场景举例
江湖盛传:北乔峰,南慕容。
“你们一起来吧,我萧峰何惧!”,一声豪情和怒吼,乔峰卷入了和慕容复、游坦之、丁春秋一决生死之战。乔峰果然不愧是天下第一豪侠,以一敌三,你来我往,打得不可开交。乔峰使出了降龙十八掌中的“亢龙有悔”,此时慕容复忙往后退,情急之下,使出了自己的绝技“游龙引凤”来化解乔峰如此强烈的进攻,此时慕容复双腿选在了亭子的柱子上,王语嫣心想:“表哥使用游龙引凤自然是不会败的了,可是面对天下众英雄的面,竟然和游坦之、丁春秋等这样的人联手对付大英雄乔峰,这也有些太不公平了,表哥,你在想些什么啊?”。此时被乔峰手下保护的段誉心急如焚,心想,这个不行,唯恐大哥有什么意外,毕竟总是乔峰神功盖世,眼前面对也是江湖上一流的高手,这样下去如何是好?突然,段誉挣脱众人的包括冲了上来,对慕容复使用激将法说:“你们两个打一个算什么英雄好汉,慕容复,有本事来和我单打啊!”。慕容复本来就对段誉一直以来对王语嫣的爱慕之意深表不满,又被他这么一激怒,怒声到:“找死!”,就像段誉扑来。此时段誉以从神仙姐姐那里学来的“凌波微步”的奇功和慕容复纠缠。此时,虚竹正在和收拾丁春秋。而乔峰正在迎战游坦之,游坦之虽然练成了很毒辣的武功,但也绝非是乔峰的对手,数招之内便被乔峰从塔顶扔了下来,结果弄到一个腿部骨折而惨败的下场!段誉白在慕容复的剑下,宁死不屈。慕容复正欲一剑了解了段誉,段正淳喝道:“休伤我儿!”挡住了慕容复的剑。慕容复非常恼怒,数招之内就把慕容复打伤在地。眼看慕容复就要杀死自己父亲,躺在地上的段誉“啊”的一声使出了大理国的绝学“六脉神剑”,几招之内,慕容复惨败,正要进一步进攻时,此时他的梦中情人王语嫣柔声叫到:“段公子手下留情啊”,这段誉,一听到王语嫣的声音,就神魂颠倒、不知所以了,慕容复乘此机会偷袭段誉,乔峰见状,一边喝道:“三弟小心”,一边瞬间出手,粉碎了慕容复的武器,慕容复还没反应过来,就已经被乔峰高高举起在了半空中,乔峰喝道:“我萧峰大好男儿,岂能与你这等小人齐名”,随即把慕容复恨恨的抛了出去!慕容复在天下英雄面前惨败,自觉颜面无常,欲拔剑自刎,被灰衣人阻拦…
定义:
单一职责原则(Single Responsibility Principle ):就一个类而言,应该仅有一个引起它变化的原因。换句话说,一个类的功能要单一,只做与它相关的事情。
如果一个完成额外的不太相关的功能或者完成其它类的功能,这就会使得一个引起一个类变化的因素太多,如果类的一处需要修改,其它和它相关连的代码都会受到影响,这就直接导致一旦系统出现了问题就难以调试困境,同时这样也非常不利于维护。
遵循单一职责原则也会给测试带来极大的方便。
违背单一职责原则会降低类的内聚性、增强类的耦合性。
违背单一职责原则会导致错误呈现几何级数的增长,因为类之间的关联性太强,每一个类都会对其他类有影响,一个类出现错误极可能会导致其他相关联的类出现错误,而且关联类联合起来还有可能产生新的错误。
在软件开发中,人们越来越意识到单一职责原则的重要性,美工只需要负责美工界面,业务层的人员只需写好业务代码,而数据层的人员只需关注数据层的工作即可。这样每个人都以自己专程协同工作,工作效率就得到了大大的提高了。
现在软件开发的经典模式MVC模式,也非常好的体现了单一职责原则。MVC(Model-View-Control)就是模型、视图、控制器三层架构模式,其中M是指数据模型、V是指用户界面、C则是控制器。采用MVC模式使得数据和表现相分离,同一个数据层可以有不同的显示层。数据层和显示层的改变互不影响。这就非常有利于提高软件的可维护性和可复用性,同时也方便了软件的管理工作和提高软件开发效率。
如下图所示:
故事分析:
Java代码实现:
乔峰的类:
package com.diermeng.designPattern.SRP; public class Qiaofeng { } |
慕容复的类图:
package com.diermeng.designPattern.SRP; public class MuRongfu { } |
建立一个测试类,代码如下:
package com.diermeng.designPattern.SRP.client; import com.diermeng.designPattern.SRP.MuRongfu; import com.diermeng.designPattern.SRP.Qiaofeng; public class GongfuTest { } |
程序运行结果如下:
我是乔峰 使用降龙十八掌,无论是敌是友我都可以应对自如,这都要感谢我遵循了单一职责原则! 我是慕容复 我会很多武功,对绝大多数人来说我都可以做到以彼之道还施彼身,但是如果遇到乔峰这样的高手,我就Over了,这都是没有遵循单一职责原则惹的祸! |
已有应用简介:
温馨提示: