多用户同时调用普通对象的变量是没有相互影响,但是调静态变量时,对它的改变会有相互影响,这些对单例模型来说,如果多用户同时调用同一个单例模型的话,普通变量和静态是不是和上面一样啊。

解决方案 »

  1.   

    如果硬要“单例”模型形式,需要写:public class myClass{
      static private myClass _obj;  public myClass SingleInstance{
        get
       {
          if(_obj==null)
            ....  //初始化_obj,设置一些值。
          return _obj;
        }
      }不过我觉得不必为了附和设计模式的那种臃肿模式。直接使用static的变量、方法,而不是先初始化实例然后再访问SingleInstance再使用其返回的对象,岂不是更好?设计模式中大多数东西都是一种“时装”性质的东西,而不像是真正的服装。
      

  2.   

    使用SingleInstance返回的对象,那么你在定义方法和属性的时候就不能static了,因为它必须通过SingleInstance所返回的对象实例来引用。并且,此时所使用的“单例”中的变量、方法其实是对象实例中的,而不是类型中的,也就是多了一道接口查询手续。不过多这个手续有一个好处,就是用在多态中。但是此时,应该是为了实现应用设计而使用,而不是为了计算机软件技术的目的。当使用“单例”的时候,一定不要按照设计模式上的那种纯“计算机脑袋”的出发点去考虑,而要按照领域模型出发去考虑“单例在现实世界中的实际对照物”。