您的位置:首页 > 其它

设计模式六大原则---单一职责原则

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均可以移植。

对于单一职责原则来说,项目的需求不同,职责的粒度划分也往往有差别;粒度划分多细,需要根据项目的具体情况分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式