单例模式有两种:懒汉模式 和 饿汉模式
懒汉模式:类加载是不完成初始化工作,只有在获取调用获取实例对象时,才进行初始化,也就是用到了延迟策略
饿汉模式 :在类加载时就完成了初始化
例1:饿汉模式
package session.login;
import java.util.Enumeration;
import java.util.Vector;
/**
* 文件名称: UserList.java
* 编写人: yh.zeng
* 编写时间: 17-1-5 下午7:48
* 文件描述: 已登录的用户列表
*/
public class UserList
{
private static UserList userList = new UserList();
private Vector<String> v = null;
private UserList(){
v = new Vector<String>();
}
public static UserList getInstance(){
return userList;
}
public void addUser(String userName){
if(userName != null && !v.contains(userName)){
v.add(userName);
}
}
public void removeUser(String userName){
if(userName != null){
v.remove(userName);
}
}
public Enumeration<String> getUserList(){
return v.elements();
}
public int getUserCount(){
return v.size();
}
}
例2:懒汉模式
package session.login;
import java.util.Enumeration;
import java.util.Vector;
/**
* 文件名称: UserList.java
* 编写人: yh.zeng
* 编写时间: 17-1-5 下午7:48
* 文件描述: 已登录的用户列表
*/
public class UserList
{
private static UserList userList = null;
private Vector<String> v = null;
private UserList(){
v = new Vector<String>();
}
public synchronized static UserList getInstance(){
if(userList == null){
userList = new UserList();
}
return userList;
}
public void addUser(String userName){
if(userName != null && !v.contains(userName)){
v.add(userName);
}
}
public void removeUser(String userName){
if(userName != null){
v.remove(userName);
}
}
public Enumeration<String> getUserList(){
return v.elements();
}
public int getUserCount(){
return v.size();
}
}