您的位置:首页 > 其它

10-单例设计模式

2018-03-12 23:12 169 查看
1、设计模式:对问题行之有效的解决方式,是一种思想。有23种设计模式,复用性、灵活性、可维护性
2、学设计模式要明确该设计模式可以解决什么问题,明确后就可以知道该设计模式何时使用
3、单例设计模式:保证一个类在内存中的对象的唯一性,即一个类在内存中只能有一个对象
4、实现单例的步骤:
(1)私有化(private)该类的所有构造函数 -- 不允许其他程序用new创建该类对象
(2)通过new在本类中创建一个本类的对象(private)
(3)定义一个公有的方法将创建的对象返回 -- 对外提供一个方法(public)让其他程序可以获取该对象
5、单例的两种形式:
饿汉式:类一加载对象就已经存在了class Single{
privete static Single s = new Single(); //不把s设为public对外使用,是因为public的s不可控
private Single() { }
public static Single getInstance(){ //方法中可以给获取实例加入某些条件(if)进行限定,可控
return s;
}
}注:其他类中不能创建Single类的对象,所以只能类名调用getInstance(),该方法需为静态static,所以s也为静态static
懒汉式:类加载进来没有对象,只有调用了getInstance()方法才会创建对象。也称为单例设计模式的延迟加载class Single{
privete static Single s = null;
private Single() { }
public static Single getInstance(){
if(s == null){
s = new Single();
}
return s;
}
}说明:
(1)延迟加载指的是懒汉式,面试时比较多见,但在真正开发时用饿汉式比较合适
(2)懒汉式看起来比较好,但先加载后加载,最终都要用到这个对象(用单例的目的就是为了获取对象),所以先加载后加载都可以。但懒汉式存在一些问题,如果懒汉式被多线程并发访问,存在着安全隐患,即保证不了对象的唯一性。如果要保证对象的唯一性,就要加锁,效率就降低了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: