构造方法私有化

本章目标
了解构造方法私有化的目的
掌握单态设计模式

 

构造方法私有化
类的封装性不光体现在对属性的封装上,实际上方法也是可以被封装的,当然,在方法封装中也包含了对构造方法的封装。例如:以下的代码,就是对构造方法进行了封装。
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!!!
 * */
}