设计模式之单例模式--慕课网笔记
来源:互联网 发布:化学软件初中 编辑:程序博客网 时间:2024/06/15 07:33
第1章 单例模式简介
1-1 单例模式简介
单例模式
- 饿汉模式
- 懒汉模式
设计模式(Design Pattern)
是一套被反复使用、多数人知晓的、经过反复编写的、代码设计经验的总结。
目的:
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
有些对象我们只需要一个,比如:
配置文件、工具类、线程池、缓存、日志对象等
如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等
单例模式保证整个应用中某个实例有且只有一个
第2章 单例模式的实现
2-1 单例模式的饿汉式实现
/* * 单例模式Singleton * 应用场合:有些对象只需要一个就足够了,如古代皇帝、老婆 * 作用:保证整个应用程序中某个实例有且只有一个 * 类型:饿汉模式、懒汉模式 */public class Singleton { //1.将构造方法私有化,不允许外部直接创建对象 private Singleton(){ } //2.创建类的唯一实例,使用private static修饰 private static Singleton instance=new Singleton(); //3.提供一个用于获取实例的方法,使用public static修饰 public static Singleton getInstance(){ return instance; }}
2-2 单例模式的懒汉式实现
/* * 懒汉模式 * 区别:饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全 * 懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全 */public class Singleton2 { //1.将构造方式私有化,不允许外边直接创建对象 private Singleton2(){ } //2.声明类的唯一实例,使用private static修饰 private static Singleton2 instance; //3.提供一个用于获取实例的方法,使用public static修饰 public static Singleton2 getInstance(){ if(instance==null){ instance=new Singleton2(); } return instance; }}
public class Test { public static void main(String[] args) { //饿汉模式 Singleton s1=Singleton.getInstance(); Singleton s2=Singleton.getInstance(); if(s1==s2){ System.out.println("s1和s2是同一个实例"); }else{ System.out.println("s1和s2不是同一个实例"); } //懒汉模式 Singleton2 s3=Singleton2.getInstance(); Singleton2 s4=Singleton2.getInstance(); if(s3==s4){ System.out.println("s3和s4是同一个实例"); }else{ System.out.println("S3和s4不是同一个实例"); } }}
第3章 “饿汉模式”和“懒汉模式”的区别
3-1 “饿汉式” pk “懒汉式”
区别:
- 饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全
- 懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全
《模式的秘密—单例模式》视频地址
阅读全文
0 0
- 设计模式笔记之---单例模式
- 设计模式笔记之单例模式
- 设计模式笔记之----单例模式
- 设计模式笔记之单例模式
- 设计模式之单例模式--慕课网笔记
- 学习笔记07-设计模式之单例设计模式
- 设计模式笔记之——单例设计模式
- 设计模式之单例学习笔记
- 设计模式笔记之单例模式(Singleton Pattern)
- 设计模式学习笔记(一)之单例模式(Singleton)
- 设计模式之01单例模式(笔记)
- 深入浅出设计模式笔记之二:单例模式
- 研磨设计模式学习笔记之单例模式
- java设计模式笔记之单例模式
- 设计模式学习笔记之单例模式
- Java设计模式学习笔记之单例模式
- 设计模式学习笔记之单例模式
- Java学习笔记---设计模式之单例模式
- 使用response实现文件下载
- NGUI 控件说明 笔记
- Codeforces Round #427 (Div. 2) C.Star sky【模拟、二维前缀和】
- python学习笔记之007.py
- Java web的三种打包方式:jar、war、ear
- 设计模式之单例模式--慕课网笔记
- php配置环境变量
- C++标准库中sstream与strstream的区别详细解析
- 5. Longest Palindromic Substring
- poj 1236 Network of Schools
- poj 3624 Charm Bracelet(01背包)
- dubbo client测试工具
- hdoj 2009
- 百度网盘客户端可以提速!!!