单例模式和多例模式说明:
1. 单例模式和多例模式属于对象模式。
2. 单例模式的对象在整个系统中只有一份,多例模式可以有多个实例。
3. 它们都不对外提供构造方法,即构造方法都为私有。
为什么用单例、多例:
之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;
之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;
用单例和多例的标准只有一个:
当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例;
这里举个例子:
public class Sex {
private static Sex manSex = new Sex("Man");
private static Sex womenSex = new Sex("Women");
private String title;
private Sex(String s_title)
{
title = s_title;
}
public static Sex getInstance(int num)
{
switch(num){case ChoiseSex.MAN :
return manSex;
default :
return womenSex;
}}
public String getTitle() {
return title;
}
interface ChoiseSex {
int MAN = 1; int WOMEN = 2; }
}
public class SexTest {
public static void main(String[] args)
{
Sex s_man = Sex.getInstance(Sex.ChoiseSex.MAN);
System.out.println(s_man.getTitle());
System.out.println("===============================================");
Sex s_women = Sex.getInstance(Sex.ChoiseSex.WOMEN);
System.out.println(s_women.getTitle());
}
}
运行结果: