设计模式学习--面向对象的5条设计原则之单一职责原则--SRP
2013-08-18 14:04
477 查看
一、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模式对代码重构;
就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。
所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的职责的变化。
“就像一个人身兼数职,而这些事情相互关联不大,,甚至有冲突,那他就无法很好的解决这些职责,应该分到不同的人身上去做才对。”
二、举例说明:
违反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模式对代码重构;
相关文章推荐
- 设计模式之六大原则——单一职责原则(SRP)
- 设计模式学习(三)————单一职责原则
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- 【设计模式攻略】OO设计原则之SRP-单一职责原则
- 设计模式学习--面向对象的5条设计原则之接口隔离原则--ISP
- [置顶] 设计模式之六大原则——单一职责原则(SRP)
- 设计模式六大原则(1):单一职责原则SRP(Single Responsibility Principle)
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- 设计模式学习笔记——单一职责原则
- 设计模式值六大原则——设计模式之六大原则——单一职责原则(SRP)
- 设计模式之六大原则——单一职责原则(SRP)
- 设计模式--单一职责原则(SRP)
- 设计模式初体验---单一职责原则SRP
- 小王和你一起学习系列之设计模式-单一职责原则
- 设计模式之单一职责原则学习
- 五 单一职责、开放—封闭、依赖倒转原则——设计模式学习笔记
- 第2章 面向对象的设计原则(SOLID):1_单一职责原则(SRP)
- 设计模式之单一职责原则学习
- 单一职责原则+开放-封闭原则+依赖倒转原则+里氏代换原则【设计模式】【学习总结】
- 设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则