黑马程序员技术交流社区
标题: 单例设计模式也叫饿汗式(三种体现的代码体现) [打印本页]
作者: aiheima 时间: 2016-1-7 21:57
标题: 单例设计模式也叫饿汗式(三种体现的代码体现)
单例设计模式(掌握)A、单例设计模式:保证类在内存中只有一个对象。
B、如何保证类在内存中只有一个对象呢?
(1)控制类的创建,不让其他类来创建本类的对象,私有构造方法。private
(2)在本类中定义一个本类的对象。Singleton s;
(3)提供公共的访问方式。 public static Singleton getInstance(){return s}
C、单例写法两种:
(1)饿汉式 开发用这种方式。
class Singleton {
//1,私有构造函数
private Singleton(){}
//2,创建本类对象
private static Singleton s = new Singleton();
//3,对外提供公共的访问方法
public static Singleton getInstance() {
return s;
}
}
(2)懒汉式 面试写这种方式。存在多线程的问题,可用同步代码块解决。
// 懒汉式,单例的延迟加载模式
class Singleton {
// 1,私有构造函数
private Singleton() {
}
// 2,声明一个本类的引用
private static Singleton s;
// 3,对外提供公共的访问方法
public static Singleton getInstance() {
if (s == null)
// 线程1,线程2
s = new Singleton();
return s;
}
}
同步代码解决:
class Ins{
private Ins(){}
private static Ins s ;
public static Ins getIns() {
if (s==null) {
synchronized(Ins.class){
if (s == null) {
s = new Ins();
}
}
}
return s;
}
}·
(3)第三种格式
class Singleton {
private Singleton() {}
//final是最终的意思,被final修饰的变量不可以被更改
public static final Singleton s = new Singleton();
}
D: 饿汉式和懒汉式的区别
a,饿汉式是空间换时间,懒汉式是时间换空间
b,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象。
作者: sidianban 时间: 2016-1-7 22:27
一直搞不懂单利
作者: aiheima 时间: 2016-1-7 22:45
还有一种叫复利
作者: sidianban 时间: 2016-1-9 00:30
有复利的代码吗
作者: aiheima 时间: 2016-1-9 00:43
我去找找 找到的话 我就发出来
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |