java设计模式之单例设计模式和多例设计模式

单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象;无论外部产生多少个实例化对象,本质上只有一个实例化对象

饿汉式单例设计

class Singleton{
    private static final Singleton INSTANCE = new Singleton();//产生一个实例化对象
    private Singleton(){}//封装构造方法
    public static Singleton getInstance(){
        return INSTANCE;//取得实例化对象
    }
    public void print(){
        System.out.print("hello word");
    }
}
public class Test{
    public static void main(String args[]){
        Singleton s = Singleton.getInstance();//无论调用多少次getInstance()方法,产生的实例化对象都是相同的
        s.print();
    }
}

懒汉式设计模式

class Singleton{
    private static final Singleton INSTANCE;//定义一个未实例化的本类对象
    private Singleton(){}//封装构造方法
    public static Singleton getInstance(){
        if(INSTANCE == null){  
            INSTANCE = new Singleton();
        }
        return INSTANCE;//取得实例化对象
    }
    public void print(){
        System.out.print("hello word");
    }
}
public class Test{
    public static void main(String args[]){
        Singleton s = Singleton.getInstance();//无论调用多少次getInstance()方法,产生的实例化对象都是相同的
        s.print();
    }
}

多例设计模式:构造方法私有化,产生特定个数对象

class Sex{
    private String sex;
    private static final Sex MAN = new Sex("男");
    private static final Sex WOMAN = new Sex("女");
    private Sex(String sex){
        this.sex = sex;
    }
    public static Sex getInstance(int ch){
        switch(ch){
            case 1:
                return MAN;
            case 2:
                return WOMAN;
            default:
                return null;
        }
    }
    public String toString(){
        return sex;
    }
}
public class Test{
    public static void main(String args[]){
        Sex s = Sex.getInstance(1);
        System.out.println(s);
    }
}
原文地址:https://www.cnblogs.com/hu1056043921/p/7340656.html