设计模式之单身模式

设计模式——单身模式

  • 单身模式(Singleton):

一、目的:保证一个类只能创建一个对象
二、实现
1、构造函数私有化:类外不可创建对象;构造函数私有的类不可被继承。
2、类的静态数据成员:
A.类的静态数据成员属于类而不属于对象
B.类的静态数据成员不需要通过类的对象或者对象的指针进行调用
C.类的静态数据成员在引用时要遵循访问权限


具体代码实现:【C++】

#include<iostream>
#include<iomanip>
using namespace std;

/*只能创建一个对象*/
class SingleTon{
private:
    int x;
    static SingleTon *Instance;
    //将构造私有化,可以通过类内公有方法调用,类外无法调用构造,无法初始化
    SingleTon(){x= 0;cout<<"————————————无参构造初始化x"<<endl;}
    SingleTon(int x){this->x= x;cout<<"————————————含参构造初始化x"<<endl;}
    ~SingleTon(){}
public:
    //私有的静态数据成员只能在类内使用公有的静态方法访问
    static SingleTon* Create(int t){
        if(!Instance){
            Instance= new SingleTon(t);
        }
        return Instance;
    }
}; 
SingleTon* SingleTon::Instance= NULL;/*静态数据成员只能在类外初始化*/

int main(void){                                                 
    SingleTon *p, *q, *h;                                       
    int n;                                                      
    cout<<"___________________请输入你要传入的值N:"<<endl;       
    cin>>n;                                                     
    p= SingleTon::Create(n);                                    
    h= SingleTon::Create(n);                                    
    q= SingleTon::Create(n);                                    
    cout<<"p的地址________"<<hex<<"0x"<<p<<endl;               
    cout<<"h的地址________"<<hex<<"0x"<<h<<endl;               
    cout<<"q的地址________"<<hex<<"0x"<<q<<endl;                                                   
    return 0;                                                   
}
发布了31 篇原创文章 · 获赞 17 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览