# 单例设计模式
### 一个类只能创建唯一的一个对象
### 想要完成单例模式,必须私有化构造器
>恶汉式
```
在类里创建对象
创建方法获得对象(static)
不存在线程问题;
```
```
public class Singleton1 {
static private Singleton1 instance = new Singleton1();
public static Singleton1 getInstance() {
return instance;
}
}
```
>懒汉式
```
在类里声明对象,不赋值(static)
创建方法为对象赋值(static)
存在线程问题;
解决方案:用对象锁synchronized修饰对象赋值方法
//锁对象为字节码文件;
```
```
public class Singleton2 {
static private Singleton2 instance = null;
public static synchronized Singleton2 getInstance() {
if(instance == null) {
instance = new Singleton2();
}
return instance;
}
}
```