设计模式观后(c++还原之五 单例模式)

已经到了作者的23个模式了

//臣子、皇帝示例
class Emperor {
private:
	//设置限制皇帝个数
	static const int const gs_maxNumOfEmperor;
	//设置多个皇帝的实例
	static vector<string> gs_strEmperor;
	static vector<Emperor*> gs_Emperor;

	//当前皇帝序列号
	static int gs_countNumofEmperor;

public:
	Emperor(string str);
	static void InitEmperor();
	static Emperor* GetInstance();
	static void say();
};
vector<string> Emperor::gs_strEmperor;
vector<Emperor*> Emperor::gs_Emperor;
const int const Emperor::gs_maxNumOfEmperor = 2;
int Emperor::gs_countNumofEmperor = 0;

Emperor::Emperor(string str) {
	gs_strEmperor.push_back(str);
}
void Emperor::InitEmperor() {
	for (int i = 0; i < gs_maxNumOfEmperor; i++)
	{
		char buffer[10] = {0};
		_itoa_s(i, buffer, 10, 10);
		gs_Emperor.push_back(new Emperor(buffer));
	}
}
Emperor* Emperor::GetInstance() {
	gs_countNumofEmperor = rand()%2;
	return gs_Emperor[gs_countNumofEmperor];
}
void Emperor::say() {
	cout << gs_strEmperor[gs_countNumofEmperor] << endl;
}

class Minister {
public:
	static void main() {
		Emperor::InitEmperor();
		for (int i = 0; i < 3; i++)
		{
			Emperor* emperor = Emperor::GetInstance();
			emperor->say();
		}
	}
};
//写下这个,主要是作者写的静态接口,循环访问同一变量的设计要记住。
//more effective c++ 里面就用如此方法限制对象个数。
//感觉单例模式要限制对象,设立全局



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值