设计模式(一)---单例
来源:互联网 发布:mac系统误删文件 编辑:程序博客网 时间:2024/05/18 03:59
思路
1、如果其他程序能够随意用new创建该类对象,那么就无法控制个数。因此,不让其他程序用new创建该类的对象。
2、既然不让其他程序new该类对象,那么该类在自己内部就要创建一个对象,否则该类就永远无法创建对象了。3、该类将创建的对象对外(整个系统)提供,让其他程序获取并使用。
步骤
1、 将该类中的构造函数私有化。
2、在本类中创建一个本类对象。
3、定义一个方法,返回值类型是本类类型。让其他程序通过该方法就可以获取到该类对象。
单例又可以分为饿汉式和懒汉式
package cn.hncu.pattern.single;
import org.junit.Test;
/*
* 饿汉式单例---先造好等别人过来拿
*/
public class Single {
private static final Single s = new Single();
private Single(){
}
public static Single getInstance(){//静态的是为了能访问
return s;
}
}
//懒汉式
class Single2 {
private static Single2 s = null;
private Single2(){
}
public static Single2 getInstance() {
if(s==null)
s=new Single2();
return s;
}
}
package cn.hncu.pattern.single;
import org.junit.Test;
/*
* 懒汉式 - --- 线程安全优化 在多线程的时候入过不加锁会有bug,每个线程开始的时候都是null,都会重新new,所以要加锁
* 当有人访问的时候才new
*/
public class Single2 {
private static Single2 s = null;
private Single2(){
}
public synchronized static Single2 getInstance(){//当有人访问的时候,先判断再new
if(s==null){
s = new Single2();
}
return s;
}
}
- 设计模式(一) 单例模式
- 设计模式(一):单例模式
- 单例模式---设计模式(一)
- 设计模式(一):单例模式
- 设计模式(一)-单例模式
- 设计模式(一):单例模式
- 设计模式(一)单例模式
- 设计模式(一)单例模式
- 设计模式-单例模式(一)
- 设计模式(一):单例模式
- 设计模式(一)单例模式
- 设计模式(一)--单例模式
- 设计模式(一):单例模式
- 设计模式(一)-单例模式
- 设计模式(一) 单例模式
- 设计模式(一)--单例模式
- 设计模式(一):单例模式
- 单例设计模式(一)
- 非常可乐(广度搜索)
- RMQ算法--高效区间查询
- ArrayList、Vector、LinkedList的区别及其优缺点?
- Fragment初识(二)
- JDBC之增删改查
- 设计模式(一)---单例
- 结构体
- 关于 request、response以及attribute的混淆问题
- Git 合并、分支、提交
- STL-map容器
- shell命令--ln
- python变量作用域
- 棋盘问题(深度搜索)
- HDU 2709 Sumsets —— 递推