| 
 
| 单例设计模式:解决一个类在内存只存在一个对象。 想要保证对象唯一,怎么办?
 1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象。
 2、还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象。
 3、为了让其他程序对自定义的访问,可以对外提供一些访问方式。
 这三步怎么使用代码体现呢?
 1、创建私有静态构造函数(用private修饰)。
 private修饰:一般类变量应该私有化,只能通过成员方法来访问。
 2、创建私有静态对象(用private和statis修饰)。
 statis修饰:静态方法访问类中的成员,成员也必须是静态的。
 private修饰:禁止其他类创建本类对象。
 3、创建共有静态方法获取私有对象(用public和statis修饰)。
 public修饰:公开一个获取该类对象的方法。
 static修饰: 调用方法可通过类名调用和对象调用,但没有对象,只能通过类名,所以该方法必须是静态的。
 不设置set方法,是因为该类只有一个对象,不需要设置。
 
 复制代码class Single{
        private Single(){}
        private static Single s = new Single();
        public static Single getInstance(){
        return s;
        }
}
class SingleDemo{
        public static void main(String[] args){
        Single ss = Single.getInstance();
        }
}
那么单例设计怎么使用?
 对于事物该怎么描述,就怎么描述。
 当需要该事物的对象保证在内存中唯一时,就将以上的三步加上即可。
 
 这种方式也称为饿汉式
 
 复制代码class Single{
    
    //私有成员变量
    private int num;
    //对外公开设置方法
    public void setNum(int num){
        this.num = num;
    }
    //对外公开获取方法
    public int getNum(){
        return num;
    }
    //私有构造函数,阻止本类以外的类使用
private Single(){}  
    //创建本类对象
    //被静态方法访问,就要被 static 修饰
    //s是成员变量,要用 private 修饰
private static Single s = new Single();
    //提供共有方法访问本类私有静态对象
    //返回值为类类型
public static Single getInstance(){
        //访问本类对象,静态方法只能访问静态对象
return s;
}
}
class SingleDemo{
public static void main(String[] arge){
        Single s1 = Single.getInstance();
        Single s2 = Single.getInstance();
        //s1和s2都是同一个对象
        System.out.println(s1==s2);
        
        //设置s1的值,s2的值也跟着改变,因为他们都是同一对象。
        s1.setNum(25);
System.out.println(s1.getNum());//25
        System.out.println(s2.getNum());//25
    }
}
 
 
 
 
 
 
 
 | 
 |