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

本文通过一个加法类的实例,详细介绍了单一职责原则的应用。强调一个类应当仅有一个引起它变化的原因,并展示了如何将职责分离以提高代码的可移植性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

夜深人静,秋高气爽,正值学习好时候,上周阅读设计模式的六个原则,包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则。
单一职责原则(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均可以移植。
对于单一职责原则来说,项目的需求不同,职责的粒度划分也往往有差别;粒度划分多细,需要根据项目的具体情况分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值