多例设计
与单例设计对应的还有一个称为多例设计,单例设计指的是只保留有一个实例化对象,而多例设计指的是可以保留多个实例化对象,例如:如果现在定义一个描述性别的类,那么该对象只有两个:男、女。或者描述颜色基色的类:红绿蓝。这种情况下可以利用多例设计来解决。
范例:实现多例设计
class JavaDemo
{
public static void main(String[] args)
{
Color c = Color.getInstance("red");//将地址指向已经创建好的RED实例
System.out.println(c());
}
}
class Color//定义描述颜色的类
{
//内部提供多例实例化
private static final Color RED = new Color("红色");
private static final Color BLUE = new Color("蓝色");
private static final Color GREEN = new Color("绿色");
private String title;
//构造方法私有化
private Color(String title){
this.title = title;
}
//覆写父类Object的toString方法
public String toString(){
return this.title;
}
//提供外界获取实例方法
public static Color getInstance(String color){
if("red".equals(color)){
return RED;
}else if("green".equals(color))
{
return GREEN;
}else if("blue".equals(color)){
return BLUE;
}else{
return null;
}
}
}
结果:红色
多例设计与单例设计的本质是相同的,一定都会在内部提供有static方法以返回实例化对象。