单例模式

来源:互联网 发布:淘宝熊家通讯 编辑:程序博客网 时间:2024/05/20 13:18

顾名思义,单例模式就是一个类只有一个实例的一种设计模式
如何让你的类只能实例化一个对象呢?

  • 首先,在设计类的时候,对外屏蔽你的构造方法(声明为private的),使外部无法访问该类的构造函数也就没办法在外类随便的new对象了

  • 然后在类的内部声明一个静态方法作为通过(类名.静态方法)的形式与外部进行交互

  • 那交互什么呢,当然是向外部传递一个这个对象的实例了,因为在类内部是可以访问到private的构造函数的,可以在类的内部创建该类的实例然后传递出去,所以这个时候就要创建一个private的当前类类型变量的属性(比如当前类是nowClass,那就要写成 private : nowClass onlyclass;),然后在静态方法里将这个私有属性(onlyclass)返回

  • 如果直接在静态方法里面{return new onlyclass();}那就不是单例模式了,因为外部同样可以通过多次调用该方法获得该类的多个实例,所以要在静态方法里面判断一下onlyclass是否为空,也就是是否创建了该类的实例,有就直接返回,没有的话就创建一个实例然后返回
  • C++代码如下

    class nowClass{    private:        static nowClass* pnowClass;        nowClass(){}    public:        static nowClass* getInstance(){        if(pnowClass == NULL)//判断            pnowClass = new nowClass();        return pnowClass;    }}

    以上就是一个类的单例模式实现的过程了
    ps:一个最简单辨别是否将类设计成单例模式的方法就是看你所设计的类是否都是方法没有属性,大多数情况下这种时候都是需要将类设计成单例模式的

    0 0