单件-SINGLETON
适用性:
1当类只能有一个实例而且客户可以从一个众所周知的访问点访问它
2 当这个唯一实例应该是通过子类化而扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时
效果:
1对唯一实例的受控访问
2缩小命名空间 Singleton模式是对全局变量的一种改进,避免了存储唯一实例全局变量污染空间
3允许对操作和表示的精化 Singleton类可以有子类
4允许可变数目的实例
5比类操作更灵活
实现:
1保证一个唯一的实例
2创建Singeleton类的子类
实现代码如下:
Singleton.h
- class MazeFactory
- {
- public:
- static MazeFactory* Instance();
- protected:
- MazeFactory();
- private:
- static MazeFactory* _instance;
- };
Singleton.cpp
- #include "Singleton.h"
- #include <iostream>
- using namespace std;
- MazeFactory::MazeFactory()
- {
- cout<<"A mazefactory is created"<<endl;
- }
- MazeFactory* MazeFactory::_instance =0;
- MazeFactory* MazeFactory::Instance()
- {
- if(_instance == 0)
- {
- _instance = new MazeFactory();
- cout<<"An instance is created successfully."<<endl;
- }
- else
- cout<<"An instance is already existed."<<endl;
- return _instance;
- }
main.cpp
- #include "Singleton.h"
- #include <iostream>
- using namespace std;
- int main()
- {
- MazeFactory::Instance();
- MazeFactory::Instance();
- return 0;
- }