java 单例设计模式
来源:互联网 发布:apache的ftpclient 编辑:程序博客网 时间:2024/06/08 05:06
设计模式
什么是设计模式?
1. 基本定义:设计模式(Design pattern)是一套被反复使用的代码设计经验的总结。使用设计模式的目的是为了可重用代码、让代码更容易被他人理解。设计模式是是软件工程的基石脉络,如大厦的结构一样。
2. Design pattern的四大要素:模式名称(Name),问题(Question),解决方案(Solution),效果(Efftive)。
java 语言有23种设计模式
单例设计模式
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例。
1 特点
1. 单例类只能有一个实例。
2. 私有构造方法
3. 单例类必须自己创建自己的唯一实例。
4. 单例类必须给所有其他对象提供这一实例。
2 常用的单例模式写法
2.1. 懒汉式单例:在第一次调用的时候实例化自己;
1. 懒汉式1:线程不安全
2. 懒汉式2:在getInstance方法上加同步,使得线程安全
2.2. 饿汉式单例:在类初始化时,已经自行实例化
什么是设计模式?
1. 基本定义:设计模式(Design pattern)是一套被反复使用的代码设计经验的总结。使用设计模式的目的是为了可重用代码、让代码更容易被他人理解。设计模式是是软件工程的基石脉络,如大厦的结构一样。
2. Design pattern的四大要素:模式名称(Name),问题(Question),解决方案(Solution),效果(Efftive)。
java 语言有23种设计模式
单例设计模式
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例。
1 特点
1. 单例类只能有一个实例。
2. 私有构造方法
3. 单例类必须自己创建自己的唯一实例。
4. 单例类必须给所有其他对象提供这一实例。
2 常用的单例模式写法
2.1. 懒汉式单例:在第一次调用的时候实例化自己;
1. 懒汉式1:线程不安全
public class Singleton { private Singleton() {}//私有构造行数,避免类在外部被实例化 private static Singleton single=null; //静态工厂方法 public static Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } }
2. 懒汉式2:在getInstance方法上加同步,使得线程安全
public class Singleton { private Singleton() {}//私有构造行数,避免类在外部被实例化 private static Singleton single=null; //静态工厂方法 加上了同步,使得线程安全 public static synchronized Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } }3. 懒汉式3:双重检查锁定,线程安全
public class Singleton { private Singleton() {}//私有构造行数,避免类在外部被实例化 private static Singleton single=null; public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) {//同步锁住,使得线程安全 if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }4. 懒汉式4:静态内部类,线程安全。因为内部在第一次调用的时候,类只会被加载一次。
public class Singleton { private static class LazyHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){}//私有构造函数 public static final Singleton getInstance() { return LazyHolder.INSTANCE; } }
2.2. 饿汉式单例:在类初始化时,已经自行实例化
public class Singleton1 { private Singleton1() {}//私有构造函数 private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; } }
阅读全文
0 0
- java 设计模式,单例设计模式
- java设计模式-单例设计模式
- java设计模式-单例设计模式
- Java设计模式 单例设计模式
- Java设计模式------单例设计模式
- java设计模式----->单例设计模式
- java设计模式:单例设计模式
- java设计模式-----单例设计模式
- Java设计模式----单例设计模式
- java设计模式-单例设计模式
- java设计模式:单例设计模式
- java 设计模式-单例设计模式
- Java设计模式--单例设计模式
- java设计模式---单例设计模式
- Java设计模式-单例设计模式
- JAVA设计模式:单例设计模式
- java-单例设计模式
- Java设计|单例模式
- activity四种启动模式
- Java中如何移除List中前/后几个元素?
- php 生成图片二维码
- 五、华为2017<明明的随机数>
- 聚集索引和非聚集索引
- java 单例设计模式
- localStorage和sessionStorage区别
- 外键关联非主键id时-hbm.xml配置
- Spring基础
- ARC下OC对象和CF对象之间的桥接(bridge)
- 后缀数组nlogn模板
- B
- jquery 获取当前时间
- 见微知著----POJ1703(并查集)