首先告诉楼主,去掉构造函系统会隐式的分配一个构造函数这是正确的。可是,这个被分配的构造函数依旧可以被被人用来创建实例。- class Singleton
- {
- //使用一个变量来缓存曾经创建的实例
- private static Singleton instance;
- //将构造器使用private修饰,隐藏该构造器
- private Singleton(){};
-
- //提供一个静态方法,用于返回Singleton实例
- //该方法可以加入自定义的控制,保证只产生一个Singleton对象
- public static Singleton getInstance(){
- //如果instance为null,表明还不曾创建Singleton对象
- //如不为null,则表明已经创建了Singleton对象
- if(instance==null){
- //创建一个Singleton对象,并将其缓存起来
- instance = new Singleton();
- }
- return instance;
- }
- }
- class TestSingleton
- {
- public static void main(String[] args){
- //创建Singleton对象不能通过构造器,只能通过getInstance()创建
- Singleton s1 = Singleton.getInstance();
- Singleton s2 = Singleton.getInstance();
- //输出 true的哦(单例)
- System.out.println(s1==s2);
- }
- }
复制代码 |