在面向对象的设计程序中,有个“单一职责”原则,也就是说,这个类的功能比较单一,只做一件事情,而且引起这个类对象变化也是唯一的。
说白了就是一个类只干一件事情,而且引起这个发生变化的接口也只有一个。
如果判断一个类是过大呢?一个简单的办法就是:这个类中的变量太多了,而且这些变量的含义功能优势多方面的。出现这种情况就要考虑要把这个类分成几个小类了。
提炼的时候,尽量把类内相关的变量放到一起。比如长方向的长和宽。
有时候类并非所有的时刻都使用所有的实力变量,把同一时刻使用的变量封装成一个类。
拥有太多的变量,往往就会有太多的代码,代码一多,就会出现重复的代码,最后就会变得很混乱。
所以尽量让每个类只负责一个功能,不仅有利于调试代码,更有利于整个代码的结构整洁。
例子:
飞机类
class Plane {
public:
Plane();
~Plane();
private:
std::string _pilotName;//飞行员名字
std::string _pilotCode;//飞行员编号
int _pilotAge;//飞行员年龄
std::string _pilotFrom;//飞行员所属单位
std::string _planeType;//飞机的机型
std::string _planeDuration;//飞机已经飞行的时长
int _planeMaxDistance;//飞机最大飞行距离
};
上面的例子可以看出定义了一个Plane类,这个类中既包含了驾驶员的个人信息,又包含了飞机本身的信息。所以这个类对于我们来说还是太大了。我们要把这个类分解出两个小类。
#pragma once
#include <string>
//飞行员类
class Pilot {
public:
Pilot();
~Pilot();
private:
std::string _pilotName;//飞行员名字
std::string _pilotCode;//飞行员编号
int _pilotAge;//飞行员年龄
std::string _pilotFrom;//飞行员所属单位
};
Pilot::Pilot() {
}
Pilot::~Pilot() {
}
//飞机属性类
class PlaneAttr {
public:
PlaneAttr();
~PlaneAttr();
private:
std::string _planeType;//飞机的机型
std::string _planeDuration;//飞机已经飞行的时长
int _planeMaxDistance;//飞机最大飞行距离
};
PlaneAttr::PlaneAttr() {
}
PlaneAttr::~PlaneAttr() {
}
class Plane {
public:
Plane();
~Plane();
private:
Pilot _pilot;//飞行员
PlaneAttr _planeAttr;//飞机属性
};
以上!