方案一:私有化构造器,通过static final域 方案二:私有化构造器,私有化static final域通过工厂模式来实现 方案三,通过Enum来实现 其实对于第一种,和第二种方法。通过反射或者序列化可以打破其单例的实现,但第三种无偿地提供了序列化机制,绝对防止多次实例化,即使是在面对复杂的序列
一般来说,对于java的对象来说,可以重用对象的情况下:尽量不要在需要的时候就创建一个相同功能的对象 1、String 2、尽量用静态初始化一些相同功能的对象 改进后: 3、基本类型及其包装类 优先使用基础类
对应获取一个类的对象,我们常用的方法就是通过构造器去new一个对象出来!但是我们也可以考虑通过一个静态方法来获取一个类的对象: 这样做的好处 这样做的坏处: 当构造器私有化后的类,不能被扩展了
对于一些类我们不希望其被实例化,往往该类只包括static方法或属性,怎么才能保证其不被实例化呢? 这样做就彻底保证了其不可实例化,即使在类的内部也不能进行实例化。通过反射也没用!
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号