实例说明
中国历史上的皇帝通常仅有一人。为了保障其唯一性,古人采用增加“防伪标识”的办法,如玉玺。更简单的办法是限制皇帝的创建。本实例使用单例模式来保证皇帝的唯一性。
实现过程
新建类文件,名称为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()方法中,创建3个Emperor对象并输出其名字。
源代码如下:
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,然后提供一个静态方法,该方法返回这个类的对象。