//构造方法私有化
//单例设计模式(Singleton)
class Singleton{
private static final Singleton INSTANCE=new Singleton();
private Singleton(){} //构造方法私有化,则只能访问内部类,所以在内部类实例化对象
public static Singleton getInstance(){
return INSTANCE;
}
public void print(){
System.out.println("Hello World!");
}
}
public class TestDemo{
public static void main(String args[]){
Singleton s=Singleton.getinstance(); //声明对象
s.print();
}
}
//现在Singleton类里面存在有构造方法,如果没有明确定义一个构造的化,会自动在编译时生成一个无参的,什么都不做的构造方法。
//即:一个类至少会保留一个构造方法
//一旦构造方法私有化了,那么在外部将无法直接通过关键字new来进行对象实例化操作
//一旦封装之后如果要访问此属性只能够通过getter方法,那么就需要通过一个getter方法可以同样不受Singleton实例化对象的控制,继续使用static属性。
------------------------------------------
//如果说现在要想控制一个类中实例化对象的产生个数,那么首先要锁定的就是类中的构造方法,因为在实例化任何新对象都要使用构造方法,如果构造方法被锁了,那么自然就无法产生新的实例化对象了。
//可是既然需要是一个实例化对象,那么就可以在类的内部使用static方式来定义一个公共的对象,并且每一次通过static方法返回唯一的一个对象,这样外部不管多少次调用,那么最终一个类只能产生唯一的一个对象
//这样的设计就是单例设计模式(Singleton)。
如果要控制一个类中实例化对象的产生个数, 首先要锁定的就是类中的构造方法(使用private定义构造方法),肉为在实例化任何新对象时都要使用构造方法,如果构造方法被锁,就自然就无法产生新的实例化对象。
如果要调用类中定义的操作,那么很显然需要一个实例化对象,这时就可以在类的内部使用static方式来定义一个公共的对象,并且每一次通过static方法返回唯一的一个对象, 这样外部不管有多少次调用, 最终一个类只能够产生唯一的一个对象,这样的设计就属于单例设计模式( Singleton )。
多例设计模式
//多例设计模式可以产生多个对象,要取得的时候需要加上标记
//定义一个性别的类
class Sex{
private String title;
private static final Sex MALE=new Sex("男");
private static final Sex FEMALE=new Sex("女");
private Sex(String title){ //构造私有化了
this.title=title;
}
public String toString(){
return this.title;
}
public static Sex getInstance(int ch){
switch(ch){
case 1:return MALE;
case 2:return FEMALE;
default:return null;
}
}
}
public class TestDemo1{
public static void mian(String args[]){
Sex sex=Sex.getInstance(2);
System.pout.println(sex);
}
}
//不管是单例还是多例设计,核心:构造方法私有化。
本程序首先定义了一个描述性别的多例程序类, 并且将其构造方法封装, 然后利用getlnstance()方法, 接收指定编号后返问一个实例化好的Sex类对象。