Java的单例模式和多例模式实战

一 单例模式

1 代码

class Boss
{
    private static Boss instance;// 静态成员变量,用来保存唯一创建的对象实例
    private Boss ()
    {
        // 利用私有化构造方法,阻止外部创建对象       
    }
    public static Boss findBoss() //检查并确保只有一个实例
    {
        if (instance == null)
        {
            System.out.println("当前没有老板,马上指派一个!");
            instance = new Boss();
        } else {
            System.out.println("已经有老板了!直接来汇报吧。");
        }
        return instance;
    }
}
public class Singleton
{
    public static void main(String[] args)
    {
        Boss boss1 = null;  // 声明对象boss1
        Boss boss2 = null;  // 声明对象boss2
        boss1 = Boss.findBoss();//实例化对象
        boss2 = Boss.findBoss();//实例化对象   
    }
}

2 运行

当前没有老板,马上指派一个!
已经有老板了!直接来汇报吧。

二 多例模式

1 代码

// 枚举类
enum Sex {
    男性, 女性
};

class sexClass {
    private String title;  // 保存信息
    private static final sexClass MALE = new sexClass("男");
    private static final sexClass FEMALE = new sexClass("女");

    private sexClass( String title ) //私有构造方法
    {
        this.title = "创造的对象性别为: " + title;
        System.out.println("构造函数"+title);

    }

    public static sexClass getInstance( Sex sex )//static方法
    {
        switch (sex) {
            case 男性:
                return MALE;
            case 女性:
                return FEMALE;
            default:
                return null;
        }
    }

    @Override
    public String toString() {
        return this.title;
    }
}

public class TestMultiton {
    public static void main( String args[] ) {
        System.out.println(sexClass.getInstance(Sex.男性));  // 如果把这句也注释上,则输出结果为空,体现出赖加载(用时才加载该类)
        //System.out.println(sexClass.getInstance(Sex.女性));
    }
}

2 运行

构造函数男
构造函数女
创造的对象性别为: 男

3 说明

多例设计模式,实际就是“单例设计模式”的扩展版。设计思想和实现步骤都非常类似。

你可能感兴趣的:(java)