23种设计模式—单例模式
- 介绍
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
单例模式:在程序设计种,我们会创建很多对象,但是为了对象是同一个,设计模式中提供了两种简洁的方式。
- 饿汉式
class Single{
private Single(){}//为了不让外界随意new对象,设计为private私有化
private static Single s = new Singele();//private防止外界直接看到内部对象s,封装对外提供get方法,static是为了让对象属于类,随着程序加载而加载,保证对象的唯一性。
public static Single getSingle(){//对方开放get方式,static能访问static方法。
return s;
}
}
- 懒汉式
class Single{
private Single(){};
private static Single s = null;
public static Single getSingle(){
if(s == null){
s = new Single();
}
return s;
}
}
- 优点:
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。 - 缺点
没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 - 使用场景
1、要求生产唯一序列号。
2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。