a- class Student{
- private String name;
- private int age;
- Student(){}
- }
- /**饿汉式
- class Singleton {
- //
- // * 单例设计模式:保证内存中只有一个对象
- // *
- // * 如何保证内存中只有一个对象?
- // * 1 把构造函数私有化
- // * 2 在成员位置自己创建一个对象
- // * 3 通过一个公共方法提供对对象的访问
- //
- private Singleton(){}//私有化构造函数,使之无法从外部创建对象
- private static Student s = new Student();//创建一个对象,静态保证内存中只有一个
- //私有化防止被外部更改
- //提供访问方法
- public static Student getStudent(){ //因为构造函数私有化,所以方法只能定义成静态,通过函数名调用
- return s;
- }
- }
- */
- //懒汉式
- class Singleton{
- private static Student s = null;
- //私有化构造函数,则成员变量和成员函数都只能是静态修饰static
-
- private Singleton(){}
-
- //提供访问接口,由于存在多线程同时访问的情况,所以需要同步
- public static synchronized Student getStudent(){
- //判断是否已有进程建立对象
- if(s == null)
- s = new Student();
- return s;
- }
- }
- class Test{
- public static void main(String[] args) {
- Student s1 = Singleton.getStudent();
- Student s2 = Singleton.getStudent();
- System.out.println(s1 == s2);//true
- }
- }
复制代码
|
|