| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> JAVA设计模式笔记 -> 正文阅读 |
|
[Java知识库]JAVA设计模式笔记 |
?1、单例模式????????1.1? 简介????????所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类 只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。???????? ? ? ? ? 1.2? 创建单例模式的八种方法????????方法一:恶汉式1-静态变量(No Lazy)
优:装载类的时候完成实例化,避免线程安全问题 缺:非懒加载,会造成内存浪费 结论:可用,但会造成内存浪费 ? ? ? ? 方法二:恶汉式2-静态代码块(No Lazy)
优缺点与上面的情况类似 ? ? ? ? 方法三:懒汉式1-静态方法(线程不安全)
优:懒加载 缺:线程不安全 总结:不要使用 ????????方法四:懒汉式2-同步方法(线程安全)
优:线程安全 缺:效率低,?每个线程在想获得类的实例时候,执行getInstance()方法都要进行 同步。? ????????方法五:懒汉式3-同步代码块(不可实现单例)
本意是对方法四的改进,但是又出现了线程安全问题,不可以使用 ? ? ? ? 方法六:双重检查-同步代码块
双重检查,对于只有最开始同时进入外层if语句的线程需要同步等待,后续的线程不会进入外层if语句,直接return ????????方法七:静态内部类
利用类装载的机制来保证实例化时只有一个对象,只有调用getInstance()方法,才会加载SingletonInstance类,从而实现懒加载,由于内部类的属性静态INSTANCE只会由装载一次,从而避免了线程不安全(与方法一类似,但是延迟了静态变量的加载) ? ? ? ? 方法八:枚举类
超级简单,不容易出错 而且枚举类实现了可序列化接口,也能防止反序列化创建新的对象 枚举的属性自带public static final修饰,是static的属性 ? ? ? ? 1.3? 总结单例模式 懒加载 线程安全 反序列化?推荐使用??
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:00:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |