只能生一个儿子。
文件操作只能一个单例去操作。
1static:
static的特点是,不需要new就能使用。即使派生了,也是使用静态的对象。
public class SingleObject {//创建 SingleObject 的一个对象private static SingleObject instance = new SingleObject();//让构造函数为 private,这样该类就不会被实例化private SingleObject(){}//获取唯一可用的对象public static SingleObject getInstance(){return instance;}public void showMessage(){System.out.println("Hello World!");}
}
静态方法,需要用类型去调用他。
public class SingletonPatternDemo {public static void main(String[] args) {//不合法的构造函数//编译时错误:构造函数 SingleObject() 是不可见的//SingleObject object = new SingleObject();//获取唯一可用的对象SingleObject object = SingleObject.getInstance();//显示消息object.showMessage();}
}
2多线程:
class Singleton{private static volatile Singleton instance = null;private static object lockHelper = new object();private Singleton() { }public static Singleton getSingleton{get{if (instance == null){lock (lockHelper){if (instance == null){instance = new Singleton();}}}return instance;}}public void showMessage(){Console.WriteLine("Test"); }