设计模式
解决某一类问题最行之有效的方法
Java中有23中设计模式
单例设计模式
解决一个类在内存中只存在一个对象
思路
- 将构造函数私有化
- 在类中创建一个本类对象
- 提供一个方法可以获取到对象
两种方法
饿汉式:类建立时分配对象
1: class Single
2: {3: private Single(){}
4: //类建立时即初始化了对象
5: private static Single s = new Single();
6: public static Single getInstance()
7: {8: return s;
9: } 10: }懒汉式:调用时才分配对象,也叫做对象的延时加载
1: class Single
2: {3: private Single(){}
4: private static Single s;
5: public static Single getInstance()
6: {7: //调用时再分配对象
8: if(s == null)
9: s = new Single();
10: return s;
11: } 12: }但是此懒汉式如果是多线程调用,容易出现new多个对象的问题,解决方法如下:
1: class Single
2: {3: private Single(){}
4: private static Single s;
5: public static Single getInstance()
6: {7: //调用时再分配对象
8: //为了避免每次都访问锁而设置的判断
9: if(s == null)
10: {11: //加锁防止多线程调用时问题
12: synchronized(Single.class)
13: {14: if(s == null)
15: {16: s = new Single();
17: } 18: } 19: }20: return s;
21: } 22: }对比之下发现:
懒汉式代码较多,而且不安全,所以建议使用饿汉式。