单例模式与static的区别

来源:互联网 发布:淘宝皇冠店铺多少钱 编辑:程序博客网 时间:2024/04/29 11:07

单例模式与static的区别

**1.static的对象一样可以被重定向啊,而单例除了static的引用外啊,最主要的是单例的构造器是private的啊,这样其他人都不可以new它了,不可以new这才是单例的核心思想所在吧。就是任何时候都只有一个,static虽然你可以随时使用,但是还是有被人new的可能。private 构造器让人不可以new,通过get获取static对象的引用,这样可以保证任何时候都只有一个该对象的实例。而static只是一个静态的对象,使用方便而已,并没有对那个对象任何的限制。和单例模式差了很多 .举个例子,你是个程序员,你希望任何时候有一个class A的实例就可以了,所以你在你的class B里封装了一个A的对象class B{static A a = new A();}这样以后所有代码大家都可以使用B.a来调用A里的方法。很方便,可是没几个月你走了,换我接手我想使用A里的方法,可是也许我根本就没有你的API,我不知道B里已经有了一个static的A,因此我在我的class C里class C{public void getA{A a =new A();//这个时候整个工程下出现了2个A的对象已经违背了你当初的设计,以后可能还会有更多的人new A();//但是如果你当时把A设计成的单例,就不会出现这样尴尬的局面了}}****2.使用单例模式可以限制对象实例的个数,除了返回实例的操作之外不能被new出来。这在某些需要限制对象访问的场合下是有用的。使用static的话并不能限制对象实例的个数。****3.单例模式最大的好处就是节省内存空间,提高效率,因为他永远都只有一个实例!而static有还是有可能被new出多个实例的,而这多个实例在用完之后也许就没用了,还要等待垃圾回收机制来回收,所以效率自然不如单例。**
0 0
原创粉丝点击