单例模型目的只是为了实现一个类只能有一个对象这个功能。
我觉得通过设置类的静态方法,静态的属性同样可以实现这个功能啊。
他们直接没有什么本质区别吧。
为什么偏偏弄个对象出来干嘛?
singleton模式用类的静态方法和属性代替不行吗
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- AngelAndAngel 2011-09-01 15:08关注
用类的静态方法确实可以办到单例模式的效果,但是他们是用在不同的环境下的,就好比用log可以打印出异常,用print也可以打印,但是不代表他们任何一个就没必要存在。
具体来说呢
1,单例类侧重与只有一个对象(注意,这里是有且只有),有的系统必须这个实例只有一个,但不能没有,那么你不能用静态方法来代替。比如说现在有个适配器系统,这个适配器有一个参数,必须是A类的对象,只要是A类对象或者是其子类的都可以,而这个对象呢在另外的地方也只能有同一个,那么此时你不能用静态方法代替。所以,在一些有相关设计模式需要用到对象,而这个对象又必须是唯一的,那么只能用单例模式了。
2,静态类和单例类里面都可以把方法当作工具函数,这个时候可以互相代替。但是一般来说,为了考虑程序的通用性,除非有些非常固定的工具方法可以放在static里面。比如说,假如你做了一个xml配置文件,而且你在这个配置文件中可以配置本配置文件的解析类,这个时候你就不能配置静态方法了,而是配置成一个单例类,让单例类对象调用方法。这些都是平时的经验,做的越多自然更明白。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报