书上说,普通类的创建要靠new来产生,想要几个就new几个,
而单例模式的实现目的是某个类只能有一个实例,实现是通过private它的构造器,一般是提供一个getInstance方法得到它的实例。假设Single类是一个用单例模式实现的类,能通过getInstance方法得到它的唯一实例。
我是不是可以像下面这样做就得到该类的很多实例??
Single a=Single.getInstance(); 
Single b=Single.getInstance(); 
Single c=Single.getInstance(); 
Single d=Single.getInstance();
........
如果我可以创造出那么多实例,它还叫做单例类吗?

解决方案 »

  1.   

     这些引用实际上指向的都是同一个对象a b c d 都是引用 不是实际的对象
      

  2.   

    不是很多实例,其实a、b、c、d都是指向的一个实例
      

  3.   

    给你个例子:
    public class SingleTest { private static SingleTest ST = null;

    private SingleTest() {}  //私有化构造方法防止实例外部创建

    public static getInstance() {
    if (ST == null) ST = new SingleTest();
    return ST;
    }}
    每次调用 getInstance() 返回的是同一个实例。
      

  4.   

    我可以创造出那么多实例,它还叫做单例类吗?
    哈哈,你的a==b==c==d==e的.对象只有一个啊,只是有不同的引用指向他
      

  5.   

    你定义的a,b,c,d等都是指向的同一个东西
    要是不一样就不叫单例了
      

  6.   

    +-----+
    |  a  | ------------+
    +-----+             |
                        |
    +-----+             |
    |  b  | ------------+
    +-----+             |     +------------+
                        +---->|   Single   |
    +-----+             |     +------------+
    |  c  | ------------+
    +-----+             |
                        |
    +-----+             |
    |  d  | ------------+
    +-----+实际上单例模式产生对象的结构示意图就是这样的。a、b、c、d 引用的都是同一个对象。