Java知识复习(六)常见的设计模式(单例、原型、工厂)
前言
发现无论是什么设计模式,其实总的原则就是减少耦合,增加可复用代码,使系统更易于扩展
参考书籍:《秒懂设计模式》
1、单例模式(Singleton)
- 单例模式:即单一的实例,同时提供几种、统一的访问接口,以使行为保持协调一致,例如SpringBean默认情况下是单例模式
- 饿汉模式:即在初始阶段就主动进行实例化,并时刻保持一种渴求的状态,无论此单例是否有人使用。举例如下
详细说明:把单例设置为static、final,即一开始就创建实例和一旦被赋值就无法修改;然后构造方法私有化,不允许外人构造;但其他类可以通过公开的getInstance获取实例; - 懒汉模式:其他同上,但是实例只有在被使用时才会被构建。举例如下:
详细说明:volatile关键字能保证变量值在各线程访问时的同步性和唯一性;synchronized是为了加同步锁,保证多线程并发下逻辑的准确性。
2、原型模式(Prototype)
- 原型模式:可以用对象创建对象,而不是用类创建对象,以此达到效率的提升。即可以直接复制现存的对象,而不用通过新建对象并一步步初始化来创建新对象。举例如下:
详细说明:该类实现了java.lang包中的克隆接口Cloneable,并重写了克隆方法,如此一来外部就能够对本类的实例进行克隆操作,省去了由类而生的再造过程。 - 原型模式的类结构如下
3、工厂方法模式(Factory Method)
1、简单工厂:把实例化和初始化的过程包装在一起,并可分类创建实例,但不易于扩展
客户端调用:调用简单工厂类即可创建不同的实例;
2、工厂方法:定义一个统一的接口,以确立统一的工业制造标准,并且易于扩展;工厂方法模式能将客户端与产品的实例化过程彻底解耦,而且可以更灵活地制造独特而多样的产品。
飞机工厂类
坦克工厂类
客户端调用:通过实例工厂类创建实例
3、工厂方法的类结构
4、抽象工厂模式(Abstract Factory)
1、抽象工厂模式:工厂方法模式在需要创建的产品变多时容易造成工厂泛滥,抽象工厂就是将产品进行规划整合,对现有工厂进行重构;其本质类似于对产品进行分类,通过整合抽象的分类来聚焦具体的产品
产品结构图
兵种抽象类包含对兵种基础属性的描述
对兵种进行分类
创建人族具体兵种,分别扩展初级和中级兵种抽象类,兽族与人族类似
对生产线进行规划,创建统一的人类兵工厂
客户端调用
注意:这样看好像看不出来什么有什么好处,但对比工厂方法就知道了;假设我们要造3*3=9个兵种,使用工厂方法就需要使用九个具体兵种类并进行创建,但使用抽象工厂仅需要知道他们的分类,即兵种类别(人、兽、神)和兵种级别(初、中、高)即可创建;如果分类更多的话,抽象工厂就更能显现其好处
2、抽象工厂的类结构
抽象工厂通过“制造工厂的工厂”这样的方式,来决定具体让哪个工厂投入生产活动;
Java知识复习(六)常见的设计模式(单例、原型、工厂)相关推荐
- JAVA设计模式 - 单例与工厂模式
前言 设计模式是在前人总结下 , 得出的经验, 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性.继承性和多态性以及类的关联关系和组合关系的充分理解, 接着我们来看设计模式中的两种比较重要的 ...
- java基础(六)多线程/设计模式
这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderfu ...
- 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...
- python基础知识整理 第七节:单例设计模式、异常、模块、包、制作模块、文件
1.单例设计模式 单例设计模式就是为对象在内存中分配空间的时候,永远只会返回一个唯一的固定的内存空间.这样就能保证在内存中这个类的对象只有唯一的一份,这个就叫做单例.(为对象分配空间使用的是内置方法_ ...
- 6大设计原则与java 23种设计模型之单例,工厂,装饰,观察者,责任链,代理,适配器,策略
设计原则 设计模式的6大原则,单一职责原则,开放封闭原则,里式替换原则,依赖导致原则,迪米特原则和接口隔离原则. 单一职责原则: 一个类只负责一个功能领域中的相应职责.高内聚,低耦合. 开闭原则: 对 ...
- 五种常用设计模式的python实现:单例、工厂、构建者、代理、观察模式
这里写自定义目录标题 前言 1.单例模式 第 1 种,重写 __new__ 方法 第 2 种,闭包定义装饰器 2.工厂模式 第 1 种,简单工厂 第 2 种,工厂方法 第 3 种,抽象工厂 3.构建者 ...
- java设计模式 单例_java设计模式--单例模式
单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...
- Java设计模式——单例设计模式/权限修饰符的使用
1. 单例模式含义 所谓的单例设计模式,就是采取一定的方法保证整个软件系统中,某个类只能存在一个对象实例. 单例设计模式 2. 单例设计模式的两种实现方法 饿汉式:不管是否需要该实例,我事先就把该实例 ...
- Java设计模式-单例设计模式
文章目录 前言 一.什么是设计模式? 二.单例模式介绍 1.单例模式的目的 2.单例模式的定义 单例模式的设计与实现要点: 3.单例模式的两种实现方式 (一)饿汉式创建 (二)懒汉式创建 4.单例模式 ...
最新文章
- 1.1GTK+ 的简单程序HelloWorld
- 周志华、张潼亲自辅导AI课程,DeeCamp 2019正式启动
- LeetCode Gas Station(双指针 )
- shell脚本中echo显示内容带颜色的实现方法
- 黑客变身夜 | 程序员名画Cosplay指南
- Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
- [html] 404页面有什么作用?
- niceyoo的2020年终总结-2021年Flag
- 关于SQLserve安装中出现“启用windows功能NetFx3时出错“
- 省级应急指挥平台建设方案
- 我的大数据之路 -- 猫眼电影再战
- 矩阵特征值和特征向量matlab,MATLAB计算矩阵特征值和特征向量
- 装饰器模式实现咖啡店(Java代码实例)
- meltdown论文翻译
- 京东手机评论分析(一):词云
- (四)Spring核心思想 - IOC与DI
- 计科练习13题解(最短路径)
- 用安卓手机三步获取root权限教程
- l2行情接口选哪个比较好?
- Java八大常用类小结
热门文章
- Objective-C基础学习心得(更新ing)
- 记录一次内存使用过高问题分析过程
- react_T_v18
- 助力企业电商双十一:华为云ECS,最专业的云服务专家
- 探究Lightning(闪电)接口
- HTML可以让元素透过元素点击,通过Mootools 1.2来操纵HTML DOM元素
- 小程序用户头像昵称,微信头像昵称填写能力 uniapp和原生小程序
- 台式电脑计算机怎么打不开怎么回事,电脑主机启动不了怎么解决?解决电脑主机打不开问题...
- 导航上显示某个地点已关闭什么意思_牢记!想要玩好iPhone手机,6个关闭、4个开启...
- The push refers to repository [xxx] An image does not exist locally with the tag:xxx