版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/84869096
目录
单例模式基本概念
大多数试试,一件产品简单,职责单一就是最好的选择;
就一个类而言,应该仅有一个引起他变化的原因【ASD】;
单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因;
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏【ASD】;
软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离【ASD】;
如果能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责【ASD】;
要在类的职责分离上多考虑,做到单一职责,这样代码才易维护、易扩展、易复用、灵活多样;
举个栗子
单例模式:
一个类只能创建一个对象
构造函数:
1.不能实例化对象,是private/protected的
2.通过静态成员函数申请对象空间,并返回地址
3.定义一个静态标记,记录对象个数,并控制
4.析构函数,将标记清空,以达到重复申请对象的目的
源码如下:
#include <iostream>
using namespace std;
class Base{
public:
static int nFlag;
static Base *CreateOJ(){
if(1 == nFlag){
nFlag = 0;7
return (new Base);
}
else
return NULL;
}
~Base(){
nFlag = 1;
}
private:
Base(){
}
Base(int a){
}
Base(const Base &a){
}
Base &operator = (Base &a){
}
};
int Base::nFlag = 1;
void main(){
Base *base1 = Base::CreateOJ();
Base *base2 = Base::CreateOJ();
delete base1;
base1 = NULL; //避免指针悬挂
Base *base3 = Base::CreateOJ();
delete base3;
getchar();
}
程序的逻辑:把所有构造函数私有,利用静态函数和成员的特点让某个类仅可创建一次;
程序运行截图,在delete base1前:
在delete base3前