单例、工厂、代理这些简单的设计模式都应该掌握(手写)


文章目录

  • 设计模式
    • 什么是设计模式?
    • 设计模式的作用?
    • 23种设计模式
    • 设计模式六大原则
  • 单例
    • 什么是单例
    • 懒汉式
    • 饿汉式

设计模式

什么是设计模式?

设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

设计模式的作用?

重复利用,提高维护性,易于扩展、提高阅读性、减少代码

23种设计模式

分为三大类,常问的有:

  1. 创建型 :工厂、单例等
  2. 结构型 : 代理、适配器等
  3. 行为型 : 策略模式等

单例99%必问

设计模式六大原则

  1. 开闭原则 : 对于扩展是开放的,但是对于修改是封闭的。增加扩展性、易于修改
  2. 里氏替换原则 : 面向对象(多态)
  3. 依赖倒转 : 面向接口编程
  4. 接口隔离原则 : 接口分离,接口之间控制耦合度
  5. 迪米特法则 : 最少知道原则,就是说一个对象应当对其它对象有尽可能少的了解
  6. 合成复用原则 : 代码复用

单例

什么是单例

保证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;}}

闭关修炼(十)单例设计相关推荐

  1. 直播平台开发,直播各个分类单例设计展示

    直播平台开发,直播各个分类单例设计展示 一. 饿汉式实现 立即加载就是使用类的时候已经将对象创建完毕(不管以后会不会使用到该实例化对象,先创建了再说.很着急的样子,故又被称为"饿汉模式&qu ...

  2. 【轻松学】Python面向对象编程——类的设计、基础语法、继承、多态、类属性和类方法、单例设计

    文章目录 1. 类的设计 大驼峰命名法 1.1 类名的确定 1.2 属性和方法的确定 练习 1.1 练习 1.2 2. 面相对象基础语法 2.1 定义简单的类(只包含方法) 2.1.1 定义只包含方法 ...

  3. 连接池Connection Pool 单例设计

    连接池单例模式 1.私有化ComboPooledDataSource将其作为属性,使其实现单例 2.DataSourceFactory实现懒汉模式,这样作为属性的连接池cpds也就变为了单例 3.从连 ...

  4. java 单例设计_Java 之单例设计模式

    设计模式: 对问题行之有效的解决方式, 其实它是一种思想. 单例设计模式 解决的问题:就是可以保证一个类在内存中的对象唯一性. 即单个实例. 比如对于A 和 B 两个程序使用同一个配置信息对象时, A ...

  5. python面向对象设计管理系统_python面向对象之单例设计模型

    单例 目标 单例设计模式 `__new__` 方法 Python 中的单例 01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的 ...

  6. java单例设计及其在jdk中的应用

    什么是单例 单例是要解决一个类只能有一个对象的问题,为什么要做这个限制? 单例如何实现 如何实现单例,把constructor私有化,不能new了,此时一个实例都没有了 constructor虽然私有 ...

  7. C++ 类中的static成员的使用及单例设计示例

    文章目录 static 静态成员变量 static静态成员函数 单例设计模式 单例实现图片资源的封装(很实用) 静态成员:被static修饰的成员变量\函数 可以通过对象(对象.静态成员).对象指针( ...

  8. java软件设计模式只单例设计模式

    概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...

  9. Python单例设计模式

    (1)为什么使用设计模式? 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. (2)单例设计模式概念 让类创建的对象只有唯一的一个实例,即每次执行  类名() 返回的对象,内存地 ...

最新文章

  1. Galaxy 生信平台(四):邮件与管理员配置
  2. eclipse 和 myeclipse 字符编码设置
  3. Exchange Server 2013就地电子数据展示
  4. 对js面向对象的理解
  5. Mask R-CNN详解和安装
  6. ProfessionalDotNetNuke 第一章(摘录)
  7. 堆、栈及静态数据区详解 转
  8. 负载均衡很难?看完这篇全懂了
  9. iOS实现书架布局样式【一些电子书的首页】
  10. 桌面版应用_类Jupyter notebook编辑器桌面版应用nteract
  11. 基于网络的 Red Hat 无人值守安装
  12. 【电子电路】电子基础基本知识和面试要点
  13. python实现PDF文件合并成一个文件
  14. 第十五周博客作业西北师范大学|李晓婷
  15. 《富爸爸穷爸爸》书摘-为什么要教授财务知识
  16. 学习笔记-DQPSK系统的调制与解调
  17. 四月送书活动获奖名单
  18. 微信公众号的简单开发
  19. 本题要求提取一个字符串中的所有数字字符(‘0‘……‘9‘),将其转换为一个整数输出。
  20. POJ1163 The Triangle

热门文章

  1. HDU-5514 Frogs
  2. 【零基础学STM32】CubeMX+HAL 喂狗小教程
  3. 说一下自动化测试的优缺点
  4. 十进制小数转化为二进制小数
  5. Ogre Giles
  6. libevent的使用流程
  7. 如何使用IP地址链接数据库
  8. ORACLE迁移到DM/达梦 Mysql迁移到DM/达梦 SQLSERVER迁移到DM/达梦 超级有用参考文档!!!
  9. seo刷流量软件有哪些|比较好的有什么呢|seo排名软件
  10. 来自西安火车站旁一小面馆的管理启示