设计模式六大原则---单一职责原则
2017-09-11 23:18
351 查看
夜深人静,秋高气爽,正值学习好时候,上周阅读设计模式的六个原则,包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则。 单一职责原则(SRP:single responsibility principle):不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 我们写一个最简单的加法类,如下:
#pragma once #include <iostream> using namespace std; class CAdd { public: CAdd(int a, int b); ~CAdd(); public: int Cal(); void Display(); private: int m_iNum1; int m_iNum2; int m_iResult; }; #include "add.h" CAdd::CAdd(int a, int b) { m_iNum1 = a; m_iNum2 = b; } CAdd::~CAdd() { } int CAdd::Cal() { m_iResult = m_iNum1 + m_iNum2; return m_iResult; } void CAdd::Display() { cout << "Cal Result is " << m_iResult << endl; }
对于一个加法职责只需完成其加法运算即可,对于业务逻辑之外的显示功能应该分离出来,交给页面类来处理,修改后如下:
#pragma once class CAdd { public: CAdd(); ~CAdd(); public: int Cal(int a, int b); }; #include "Cal.h" CAdd::CAdd() { } CAdd::~CAdd() { } int CAdd::Cal(int a, int b) { return a + b; } #pragma once #include "Cal.h" class CCalUI { public: CCalUI(); ~CCalUI(); public: void Display(); }; #include "CalUI.h" #include <iostream> using namespace std; CCalUI::CCalUI() { } CCalUI::~CCalUI() { } void CCalUI::Display() { CAdd add; int iResult = add.Cal(1, 2); cout << "Display1:" << iResult<< endl; cout << "----Display2----" << iResult << endl; }
这样对于加法算法不过遇到什么样UI均可以移植。
对于单一职责原则来说,项目的需求不同,职责的粒度划分也往往有差别;粒度划分多细,需要根据项目的具体情况分析。
相关文章推荐
- 第三拍摄UFO---单一职责原则(读书笔记)(设计模式六大原则之一单一职责原则)
- 设计模式六大原则(1):单一职责原则
- 设计模式学习之——六大设计原则之一:单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则例子(二)-- 单一职责原则(SRP)例子
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则之单一职责原则
- 设计模式六大原则之(一) 单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则之单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则(1):单一职责原则
- 设计模式六大原则---单一职责原则
- 设计模式六大原则(1):单一职责原则