前言

发现无论是什么设计模式,其实总的原则就是减少耦合,增加可复用代码,使系统更易于扩展
参考书籍:《秒懂设计模式》

1、单例模式(Singleton)

  1. 单例模式:即单一的实例,同时提供几种、统一的访问接口,以使行为保持协调一致,例如SpringBean默认情况下是单例模式
  2. 饿汉模式:即在初始阶段就主动进行实例化,并时刻保持一种渴求的状态,无论此单例是否有人使用。举例如下
    详细说明:把单例设置为static、final,即一开始就创建实例和一旦被赋值就无法修改;然后构造方法私有化,不允许外人构造;但其他类可以通过公开的getInstance获取实例;
  3. 懒汉模式:其他同上,但是实例只有在被使用时才会被构建。举例如下:
    详细说明:volatile关键字能保证变量值在各线程访问时的同步性和唯一性;synchronized是为了加同步锁,保证多线程并发下逻辑的准确性。

2、原型模式(Prototype)

  1. 原型模式:可以用对象创建对象,而不是用类创建对象,以此达到效率的提升。即可以直接复制现存的对象,而不用通过新建对象并一步步初始化来创建新对象。举例如下:


    详细说明:该类实现了java.lang包中的克隆接口Cloneable,并重写了克隆方法,如此一来外部就能够对本类的实例进行克隆操作,省去了由类而生的再造过程。
  2. 原型模式的类结构如下

3、工厂方法模式(Factory Method)

1、简单工厂:把实例化和初始化的过程包装在一起,并可分类创建实例,但不易于扩展

客户端调用:调用简单工厂类即可创建不同的实例;

2、工厂方法:定义一个统一的接口,以确立统一的工业制造标准,并且易于扩展;工厂方法模式能将客户端与产品的实例化过程彻底解耦,而且可以更灵活地制造独特而多样的产品。

飞机工厂类

坦克工厂类

客户端调用:通过实例工厂类创建实例

3、工厂方法的类结构

4、抽象工厂模式(Abstract Factory)

1、抽象工厂模式:工厂方法模式在需要创建的产品变多时容易造成工厂泛滥,抽象工厂就是将产品进行规划整合,对现有工厂进行重构;其本质类似于对产品进行分类,通过整合抽象的分类来聚焦具体的产品
产品结构图
兵种抽象类包含对兵种基础属性的描述

对兵种进行分类

创建人族具体兵种,分别扩展初级和中级兵种抽象类,兽族与人族类似


对生产线进行规划,创建统一的人类兵工厂



客户端调用

注意:这样看好像看不出来什么有什么好处,但对比工厂方法就知道了;假设我们要造3*3=9个兵种,使用工厂方法就需要使用九个具体兵种类并进行创建,但使用抽象工厂仅需要知道他们的分类,即兵种类别(人、兽、神)和兵种级别(初、中、高)即可创建;如果分类更多的话,抽象工厂就更能显现其好处

2、抽象工厂的类结构
抽象工厂通过“制造工厂的工厂”这样的方式,来决定具体让哪个工厂投入生产活动;

Java知识复习(六)常见的设计模式(单例、原型、工厂)相关推荐

  1. JAVA设计模式 - 单例与工厂模式

    前言 设计模式是在前人总结下 , 得出的经验, 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性.继承性和多态性以及类的关联关系和组合关系的充分理解, 接着我们来看设计模式中的两种比较重要的 ...

  2. java基础(六)多线程/设计模式

    这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderfu ...

  3. 第三次学JAVA再学不好就吃翔(part117)--单例设计模式

    学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...

  4. python基础知识整理 第七节:单例设计模式、异常、模块、包、制作模块、文件

    1.单例设计模式 单例设计模式就是为对象在内存中分配空间的时候,永远只会返回一个唯一的固定的内存空间.这样就能保证在内存中这个类的对象只有唯一的一份,这个就叫做单例.(为对象分配空间使用的是内置方法_ ...

  5. 6大设计原则与java 23种设计模型之单例,工厂,装饰,观察者,责任链,代理,适配器,策略

    设计原则 设计模式的6大原则,单一职责原则,开放封闭原则,里式替换原则,依赖导致原则,迪米特原则和接口隔离原则. 单一职责原则: 一个类只负责一个功能领域中的相应职责.高内聚,低耦合. 开闭原则: 对 ...

  6. 五种常用设计模式的python实现:单例、工厂、构建者、代理、观察模式

    这里写自定义目录标题 前言 1.单例模式 第 1 种,重写 __new__ 方法 第 2 种,闭包定义装饰器 2.工厂模式 第 1 种,简单工厂 第 2 种,工厂方法 第 3 种,抽象工厂 3.构建者 ...

  7. java设计模式 单例_java设计模式--单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

  8. Java设计模式——单例设计模式/权限修饰符的使用

    1. 单例模式含义 所谓的单例设计模式,就是采取一定的方法保证整个软件系统中,某个类只能存在一个对象实例. 单例设计模式 2. 单例设计模式的两种实现方法 饿汉式:不管是否需要该实例,我事先就把该实例 ...

  9. Java设计模式-单例设计模式

    文章目录 前言 一.什么是设计模式? 二.单例模式介绍 1.单例模式的目的 2.单例模式的定义 单例模式的设计与实现要点: 3.单例模式的两种实现方式 (一)饿汉式创建 (二)懒汉式创建 4.单例模式 ...

最新文章

  1. 1.1GTK+ 的简单程序HelloWorld
  2. 周志华、张潼亲自辅导AI课程,DeeCamp 2019正式启动
  3. LeetCode Gas Station(双指针 )
  4. shell脚本中echo显示内容带颜色的实现方法
  5. 黑客变身夜 | 程序员名画Cosplay指南
  6. Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
  7. [html] 404页面有什么作用?
  8. niceyoo的2020年终总结-2021年Flag
  9. 关于SQLserve安装中出现“启用windows功能NetFx3时出错“
  10. 省级应急指挥平台建设方案
  11. 我的大数据之路 -- 猫眼电影再战
  12. 矩阵特征值和特征向量matlab,MATLAB计算矩阵特征值和特征向量
  13. 装饰器模式实现咖啡店(Java代码实例)
  14. meltdown论文翻译
  15. 京东手机评论分析(一):词云
  16. (四)Spring核心思想 - IOC与DI
  17. 计科练习13题解(最短路径)
  18. 用安卓手机三步获取root权限教程
  19. l2行情接口选哪个比较好?
  20. Java八大常用类小结

热门文章

  1. Objective-C基础学习心得(更新ing)
  2. 记录一次内存使用过高问题分析过程
  3. react_T_v18
  4. 助力企业电商双十一:华为云ECS,最专业的云服务专家
  5. 探究Lightning(闪电)接口
  6. HTML可以让元素透过元素点击,通过Mootools 1.2来操纵HTML DOM元素
  7. 小程序用户头像昵称,微信头像昵称填写能力 uniapp和原生小程序
  8. 台式电脑计算机怎么打不开怎么回事,电脑主机启动不了怎么解决?解决电脑主机打不开问题...
  9. 导航上显示某个地点已关闭什么意思_牢记!想要玩好iPhone手机,6个关闭、4个开启...
  10. The push refers to repository [xxx] An image does not exist locally with the tag:xxx