前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式学习--面向对象的5条设计原则之单一职责原则--SRP

设计模式学习--面向对象的5条设计原则之单一职责原则--SRP

作者头像
hbbliyong
发布2018-03-05 16:44:13
7390
发布2018-03-05 16:44:13
举报
文章被收录于专栏:hbbliyonghbbliyong

一、SRP简介(SRP--Single-Responsibility Principle):

就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。

所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的职责的变化。

“就像一个人身兼数职,而这些事情相互关联不大,,甚至有冲突,那他就无法很好的解决这些职责,应该分到不同的人身上去做才对。”

二、举例说明:

违反SRP原则代码:  modem接口明显具有两个职责:连接管理和数据通讯;

代码语言:javascript
复制
interface Modem
{
    public void dial(string pno);
    public void hangup();
    public void send(char c);
    public void recv();
}

如果应用程序变化影响连接函数,那么就需要重构:

代码语言:javascript
复制
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模式对代码重构;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-08-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档