Java经典编程300例之实例046 单例模式的应用

实例说明

中国历史上的皇帝通常仅有一人。为了保障其唯一性,古人采用增加“防伪标识”的办法,如玉玺。更简单的办法是限制皇帝的创建。本实例使用单例模式来保证皇帝的唯一性。


实现过程

新建类文件,名称为Emperor。在Emperor类中,将构造方法设置成私有,并提供一个静态方法用于获得该类的实例。

源代码如下:

public class Emperor {
    private static Emperor emperor = null;
    private Emperor() {
    }
    public static Emperor getInstance() {
        if (emperor == null) {
            emperor = new Emperor();
        }
        return emperor;
    }
    public void getName() {
        System.out.println("我是皇帝:明日科技");
    }
}

再创建类文件,名称为Test。在该类的main()方法中,创建3Emperor对象并输出其名字。

源代码如下:

public class Test {
    public static void main(String[] args) {
        System.out.println("创建皇帝1对象:");
        Emperor emperor1 = Emperor.getInstance();
        emperor1.getName();
        System.out.println("创建皇帝2对象:");
        Emperor emperor2 = Emperor.getInstance();
        emperor2.getName();
        System.out.println("创建皇帝2对象:");
        Emperor emperor3 = Emperor.getInstance();
        emperor3.getName();
    }
}

编译运行

$ javac Emperor.java Test.java

$ java Test

创建皇帝1对象:

我是皇帝:明日科技

创建皇帝2对象:

我是皇帝:明日科技

创建皇帝2对象:

我是皇帝:明日科技


技术要点

单例模式的特点在于仅能获得一个对象。为了防止其他用户创建对象,需要将构造方法设置成private,然后提供一个静态方法,该方法返回这个类的对象。


本书内容包括java语言概述、 eclipse开发工具、 java语言基础、 流程控制、 数组及其常用操作、 面向对象入门、 面向对象进阶、 字符串与包装类、 java集合类框架、 常用数学工具类、 错误处理、 输入/输出、 枚举类型与泛型、 swing入门、 多线程、 网络通信和数据库操作。   本书所精选的实例都是一线开发人员在实际项目中所积累的,并进行了技术上的解析,给出了详细的实现过程。读者通过对本书的学习,能够提高开发的能力。    本书提供了大量的源程序、素材,提供了相关的模块库、案库、素材库、题库等多种形式辅助学习资料,还提供迅速及时的微博、qq、论坛等技术支持。    本书内容详尽,实例丰富,非常适合作为零基础学习人员的学习用书和大中专院校师生的学习教材,也适合作为相关培训机构的师生和软件开发人员的参考资料。 《java经典编程300》 第1章 java语言概述   实例001 输出“hello world”   实例002 输出控制台传递的参数   实例003 输出由“*”组成的三角形   实例004 输出符号表情 第2章 eclipse开发工具   实例005 下载并运行eclipse 工具   实例006 为eclipse安装汉化包   实例007 使用eclipse注释代码   实例008 使用eclipse格式化代码   实例009 安装windowbuilder插件   实例010 开发计算器界面 第3章 java语言基础   实例011 输出错误信息与调试信息   实例012 从控制台接收输入字符   实例013 重定向输出流实现程序日志   实例014 自动类型转换与强制类型转换   实例015 加密可以这样简单(位运算)   实例016 用三元运算符判断奇数和偶数 .  实例017 不用乘法运算符实现2×16   实例018 实现两个变量的互换(不借助第3个变量)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值