构造方法私有化
本章目标
了解构造方法私有化的目的
掌握单态设计模式
构造方法私有化
类的封装性不光体现在对属性的封装上,实际上方法也是可以被封装的,当然,在方法封装中也包含了对构造方法的封装。例如:以下的代码,就是对构造方法进行了封装。
class Singleton {
private Singleton() { // 此处将构造方法进行封装
}
public void print(){ // 打印信息
System.out.println("Hello World!!!");
}
}
程序的意义
单态设计模式的意义
实际上这样的应用,读者应该早就能有所了解了,读者应该都很清楚在windows中有一个回收站的程序,除了桌面上的回收站之外,每个硬盘上都有一个回收站,实际上每个硬盘的回收站和桌面上的回收站都是同一个,那么也就是说在整个操作系统上只有一个回收站实例,各个地方只是引用此实例而已。
class Singleton{
static Singleton instance = new Singleton();//在内部产生本类的实例化对象
private Singleton(){//此处将构造方法进行封装
}
public void print(){//输出信息
System.out.println("Hello world!!!");
}
}
public class SingleDemo04 {
public static void main(String[] args) {
Singleton s1 = null;
s1 = Singleton.instance;//访问类中的静态属性
s1.print();
}
/* 结果:
* Hello world!!!
* */
}
class Single{
//在内部产生本类的实例化对象,将属性封装
static Single instance = new Single();
private Single(){//此处将构造方法进行封装
}
public static Single getInstance(){//通过静态方法取得 Single 类的实例
return instance;
}
public void print(){//输出信息
System.out.println("Hello world!!!");
}
}
public class SingleDemo05 {
public static void main(String[] args) {
Single s1 = Single.getInstance();//访问类中的静态方法,取得对象实例
Single s2 = Single.getInstance();//访问类中的静态方法,取得对象实例
Single s3 = Single.getInstance();//访问类中的静态方法,取得对象实例
s1.print();//输出信息
s2.print();//输出信息
s3.print();//输出信息
}
/* 结果:
* Hello world!!!
* Hello world!!!
* Hello world!!!
* */
}