Java 25天基础-DAY 06-面向对象-单例模式

/*
设计模式:解决某一类问题最行之有效的方法
Java中23种设计模式:

单例设计模式:解决一个类在内存中值存在一个对象

想要保证对象唯一
1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2、为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。
3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

这三步怎么用代码体现呢?
1、将构造函数私有化
2、在类中创键一个本类对象
3、给创建的对象提供一个访问该对象的方式

对于事物该怎么描述还怎么描述,当需要将该事物的对象保证在内存中唯一时,将以上的三步加上即可。
*/

class Single
{

private int num;
public void setNum (int num)
{
    this.num = num;
}
public int getNum()
{
    return num;
}
private Single(){}
private static Single s = new Single();
//因为s变量不需要外部直接访问,所以私有化,因为下面的静态函数需要调用该对象,所以也将其静态。
public static Single getInstance()
//因为不能创建对象,需要使用类名访问,所以使用静态函数。
{
    return s;
}

}
class SingleDemo
{

public static void main(String[] args) 
{
    Single s1 = Single.getInstance();
    Single s2 = Single.getInstance();
    s1.setNum(32);
        
    
    System.out.println(s2.getNum());
    //s2的值和s1的值相同证明调用的是同一个对象。
}

}

/*
class Single
{

private static Single s=new Single();
private Single(){}
public static Single getInstance()
{
    return s;
}

}

饿汉式:
对象先初始化。

*/

class Single
{

private static Single s = null;
private Single(){}
public static Single getInstance()
{
    if (s==null)
    {
        s= new Single();
        return s;
    }
}
//懒汉式,对象被调用时才初始化。也叫做延时加载。

}
//定义单类时使用饿汉式
class 单例模式
{

public static void main(String[] args) 
{
    System.out.println("Hello World!");
}

}

class Single
{

private static Single s = null;
private Single(){}
public static synchronized Single getInstance()
{
    if (s==null)
    {
        -->A
        s= new Single();
        return s;
    }
}

}//加入synchronized后会造成程序低效,因为当B遇到synchronized就不会进入。

上一篇:Java 25天基础-DAY 05-面向对象-构造函数


下一篇:swap交换分区