单例模式:解决对象的唯一性,保证了内存中一个对象是唯一的(因为频繁的创建对象,回收对象会造成系统性能下降)
应用:比如我们在浏览BBS、SNS网站的时候,常常会看到“当前在线人数”这样的一项内容。对于这样的一项功能,我们通常的做法是把当前的在线人数存放到一个内存、文件或者数据库中,每次用户登录的时候,就会马上从内存、文件或者数据库中取出,在其基础上加1后,作为当前的在线人数进行显示,然后再把它保存回内存、文件或者数据库里,这样后续登录的用户看到的就是更新后的当前在线人数;同样的道理,当用户退出后,当前在线人数进行减1的工作。所以,对于这样的一个需求,我们按照面向对象的设计思想,可以把它抽象为“在线计数器”这样一个对象,而且它只能有一个对象存在,即可以用单例模式,具体实现如下:
Java代码:
//在线人数计数器
class OnlineCounter {
//在线人数
private int onlineCount = 0;
//构造函数
public OnlineCounter(){
//从文件或者数据库读取数据,假如读出来的数据是100
this.onlineCount = 100;
}
//在用户登录后,在线人数加1
public void incCount(){
this.onlineCount++;
}
//在用户退出后,在线人数减1
public void decCount(){
this.onlineCount--;
}
//保存在线人数
public void saveCount(){
}
//获取在线人数
public int getCount(){
return onlineCount;
}
//测试函数
public static void main(String[] args) {
try{
OnlineCounter onlineCounter = new OnlineCounter();
System.out.println("在线人数:" +onlineCounter.getCount());
onlineCounter.incCount();
System.out.println("在线人数:" + onlineCounter.getCount());
onlineCounter.decCount();
System.out.println("在线人数:" + onlineCounter.getCount());
}catch(Exception err){
}
}
}
|