iteye_8561 2011-09-01 14:55
浏览 176
已采纳

singleton模式用类的静态方法和属性代替不行吗

单例模型目的只是为了实现一个类只能有一个对象这个功能。
我觉得通过设置类的静态方法,静态的属性同样可以实现这个功能啊。
他们直接没有什么本质区别吧。
为什么偏偏弄个对象出来干嘛?

  • 写回答

2条回答 默认 最新

  • AngelAndAngel 2011-09-01 15:08
    关注

    用类的静态方法确实可以办到单例模式的效果,但是他们是用在不同的环境下的,就好比用log可以打印出异常,用print也可以打印,但是不代表他们任何一个就没必要存在。
    具体来说呢
    1,单例类侧重与只有一个对象(注意,这里是有且只有),有的系统必须这个实例只有一个,但不能没有,那么你不能用静态方法来代替。比如说现在有个适配器系统,这个适配器有一个参数,必须是A类的对象,只要是A类对象或者是其子类的都可以,而这个对象呢在另外的地方也只能有同一个,那么此时你不能用静态方法代替。所以,在一些有相关设计模式需要用到对象,而这个对象又必须是唯一的,那么只能用单例模式了。
    2,静态类和单例类里面都可以把方法当作工具函数,这个时候可以互相代替。但是一般来说,为了考虑程序的通用性,除非有些非常固定的工具方法可以放在static里面。比如说,假如你做了一个xml配置文件,而且你在这个配置文件中可以配置本配置文件的解析类,这个时候你就不能配置静态方法了,而是配置成一个单例类,让单例类对象调用方法。

    这些都是平时的经验,做的越多自然更明白。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line