博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习--面向对象的5条设计原则之单一职责原则--SRP
阅读量:6635 次
发布时间:2019-06-25

本文共 827 字,大约阅读时间需要 2 分钟。

 

一、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模式对代码重构;

转载地址:http://iaivo.baihongyu.com/

你可能感兴趣的文章
查找表包含的页和页所在的表
查看>>
快速高效实现微信小程序图片上传与腾讯免费5G存储空间的使用
查看>>
vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式...
查看>>
mvc笔记(2012-11-02)
查看>>
求二叉排序树的镜像
查看>>
在StoryBoard对UICollectionViewCell 进行Autolayout是遇到的Xcode6.01的BUG
查看>>
后缀自动机板子和一些用法
查看>>
WPF 虚拟键盘
查看>>
正则表达式使用
查看>>
解决IE下返回json数据提示文件保存到问题
查看>>
Java设置session超时(失效)的时间
查看>>
New Concept English Two 17 43
查看>>
Java监听器
查看>>
【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
查看>>
解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
查看>>
attachEvent与addEventListener的区别 真实例子
查看>>
Maven下载清除jar包
查看>>
使用大白菜安装Windows Server 2012 r2
查看>>
springmvc配置首页的方式
查看>>
hive 查看表结构和属性
查看>>