闭关修炼(十)单例设计
单例、工厂、代理这些简单的设计模式都应该掌握(手写)
文章目录
- 设计模式
- 什么是设计模式?
- 设计模式的作用?
- 23种设计模式
- 设计模式六大原则
- 单例
- 什么是单例
- 懒汉式
- 饿汉式
设计模式
什么是设计模式?
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
设计模式的作用?
重复利用,提高维护性,易于扩展、提高阅读性、减少代码
23种设计模式
分为三大类,常问的有:
- 创建型 :工厂、单例等
- 结构型 : 代理、适配器等
- 行为型 : 策略模式等
单例99%必问
设计模式六大原则
- 开闭原则 : 对于扩展是开放的,但是对于修改是封闭的。增加扩展性、易于修改
- 里氏替换原则 : 面向对象(多态)
- 依赖倒转 : 面向接口编程
- 接口隔离原则 : 接口分离,接口之间控制耦合度
- 迪米特法则 : 最少知道原则,就是说一个对象应当对其它对象有尽可能少的了解
- 合成复用原则 : 代码复用
单例
什么是单例
保证jvm中只有一个实例,分为懒汉式和饿汉式
懒汉式 – 线程不安全,需要时候才会创建
饿汉式 – 天生线程安全,jvm class 加载的时候就初始化
重要知识点:懒汉式双重检验锁和饿汉式写法
懒汉式
只有需要时候才会创建,
写法:同步代码块+双重检验
/*** 单例 懒汉式* 需要的时候才会创建对象** @author uuz* @date 2021/01/10*/
class SingleLazy {private static SingleLazy singleton;private SingleLazy() {}/*** 获取单例** @return {@link SingleLazy}*/@SuppressWarnings("all")public static SingleLazy getSingleton() {// 当对象不是null的时候就不用考虑线程安全问题了,// 所以不用整个函数加synchronized 降低效率if (singleton == null) {// 静态函数不能用this锁,注意synchronized (SingleLazy.class) {// 双重检验锁, 两个线程同时为判断sigleton为null时进入// 同步代码块再次进行判断if (singleton == null) {singleton = new SingleLazy();}}}return singleton;}}
饿汉式
天生线程安全,jvm class 加载的时候就初始化
/*** 单一 饿汉式** @author uuz* @date 2021/01/10*/
class SingleHunger {@SuppressWarnings("all")private static SingleHunger singleton = new SingleHunger();private SingleHunger() {}/*** 获取单例** @return {@link SingleHunger}*/public static SingleHunger getSingleton() {return singleton;}}
闭关修炼(十)单例设计相关推荐
- 直播平台开发,直播各个分类单例设计展示
直播平台开发,直播各个分类单例设计展示 一. 饿汉式实现 立即加载就是使用类的时候已经将对象创建完毕(不管以后会不会使用到该实例化对象,先创建了再说.很着急的样子,故又被称为"饿汉模式&qu ...
- 【轻松学】Python面向对象编程——类的设计、基础语法、继承、多态、类属性和类方法、单例设计
文章目录 1. 类的设计 大驼峰命名法 1.1 类名的确定 1.2 属性和方法的确定 练习 1.1 练习 1.2 2. 面相对象基础语法 2.1 定义简单的类(只包含方法) 2.1.1 定义只包含方法 ...
- 连接池Connection Pool 单例设计
连接池单例模式 1.私有化ComboPooledDataSource将其作为属性,使其实现单例 2.DataSourceFactory实现懒汉模式,这样作为属性的连接池cpds也就变为了单例 3.从连 ...
- java 单例设计_Java 之单例设计模式
设计模式: 对问题行之有效的解决方式, 其实它是一种思想. 单例设计模式 解决的问题:就是可以保证一个类在内存中的对象唯一性. 即单个实例. 比如对于A 和 B 两个程序使用同一个配置信息对象时, A ...
- python面向对象设计管理系统_python面向对象之单例设计模型
单例 目标 单例设计模式 `__new__` 方法 Python 中的单例 01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的 ...
- java单例设计及其在jdk中的应用
什么是单例 单例是要解决一个类只能有一个对象的问题,为什么要做这个限制? 单例如何实现 如何实现单例,把constructor私有化,不能new了,此时一个实例都没有了 constructor虽然私有 ...
- C++ 类中的static成员的使用及单例设计示例
文章目录 static 静态成员变量 static静态成员函数 单例设计模式 单例实现图片资源的封装(很实用) 静态成员:被static修饰的成员变量\函数 可以通过对象(对象.静态成员).对象指针( ...
- java软件设计模式只单例设计模式
概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...
- Python单例设计模式
(1)为什么使用设计模式? 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. (2)单例设计模式概念 让类创建的对象只有唯一的一个实例,即每次执行 类名() 返回的对象,内存地 ...
最新文章
- Galaxy 生信平台(四):邮件与管理员配置
- eclipse 和 myeclipse 字符编码设置
- Exchange Server 2013就地电子数据展示
- 对js面向对象的理解
- Mask R-CNN详解和安装
- ProfessionalDotNetNuke 第一章(摘录)
- 堆、栈及静态数据区详解 转
- 负载均衡很难?看完这篇全懂了
- iOS实现书架布局样式【一些电子书的首页】
- 桌面版应用_类Jupyter notebook编辑器桌面版应用nteract
- 基于网络的 Red Hat 无人值守安装
- 【电子电路】电子基础基本知识和面试要点
- python实现PDF文件合并成一个文件
- 第十五周博客作业西北师范大学|李晓婷
- 《富爸爸穷爸爸》书摘-为什么要教授财务知识
- 学习笔记-DQPSK系统的调制与解调
- 四月送书活动获奖名单
- 微信公众号的简单开发
- 本题要求提取一个字符串中的所有数字字符(‘0‘……‘9‘),将其转换为一个整数输出。
- POJ1163 The Triangle