您的位置:程序门 -> c/c++ -> c++ 语言



请问单件模式为什么要用静态方法来实现?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问单件模式为什么要用静态方法来实现?[已结贴,结贴人:wbcs_007]
发表于:2007-07-21 22:20:29 楼主
不用不行吗?如果不用得话,用指针也可以去调用instance()啊
迷惑中
发表于:2007-07-21 22:57:521楼 得分:0
实现方法不是唯一的
发表于:2007-07-21 22:58:142楼 得分:0
这个只是一个比较简单、比较常见的方法
发表于:2007-07-22 12:29:123楼 得分:0
我就是想知道这样方法的道理
发表于:2007-07-22 12:37:134楼 得分:10
当我有一个   t   类型的指针   t*   p;   要通过   p   调用成员方法   p-> instance(),必须是在   p   已经指向一个   t   类型对象的前提下。
t   t;
p   =   &t;
或者
p   =   new   t();

这时,已经有(至少)一个   t   对象存在了,且这个对象由调用者手工创建,那么,如何防止调用者创建第二个   t   t2;   呢?不能防止,如何保证   singleton   的单件语意?
发表于:2007-07-22 12:51:375楼 得分:10
class   signel
{
public   :

        static   signel*   getinstande()
        {
                static   signel*   obj   =   new   signel;       //   这个只会运行一次,所以无论调用多少次,都是得到同一个obj
                return   obj;
        }

private   :
        signel(){};

};

int   main()
{
        signel*   p   =   signel::getinstande();
发表于:2007-07-22 18:01:336楼 得分:0
可以不用你所说的meyer   singleton方法

你可以看看design   patterns或者modern   c++   design上的描述
发表于:2007-07-22 19:18:037楼 得分:0
其实就是为了实例在实例化过程中的唯一性
发表于:2007-07-22 21:00:398楼 得分:0
可以不用静态方法的

public   class   singleton
{
  ……………………
  ……………………
  ……………………

  public   static   singleton   instance   =   new   singleton();
}

直接引用   singleton.instance.……
发表于:2007-07-22 21:09:539楼 得分:0
哎呀,发错了,我以为是java,没看清楚

class   singleton
{
  ………………
  ………………
  ………………
public:
  static   singleton   instance;
}

singleton   singleton::instance;


快速检索

最新资讯
热门点击