单例设计模式

作用:减少系统开销,优化资源共享访问
UML:

分类

1)、饿汉式(不可延时加载) 可能造成资源浪费
枚举型:天然的单例设计模式(可防止反射和反序列化)

enum EnumUnique {//该属性是枚举EnumUnique的实例instance;//可添加方法public void operation() {System.out.println("枚举单例设计模式");}}

2)、懒汉式 (可延时加载)
①double checking (synchronized,volatile(防止指令重排,同步数据)):受JVM底层机制影响,一般不使用 。
②静态内部类式:类的加载是天然线程安全,加载一个类时,其内部类不会同时被加载。
一个类被加载,当且仅当其某个静态成员(静态域、构造器、静态方法等)被调用时发生。

PS:单例设计模式会被破解
①反序列化(将对象写入文件,再提取出来)
序列化时,需实现Serializable接口,防止反序列化可定义readResolve():是一种回调,直接返回对象。

private Object readResolve() throws ObjectStreamException{  return instance;
}

②反射(提取私有构造器强制建立对象)
防止方法:可在构造器中手动抛出异常

工厂模式(Product + Factory)

①简单工厂模式(直接建立工厂)
可扩展性低,只能进行修改
ps:可在工厂中通过反射获取对象来解决修改问题
UML:

②工厂方法模式(使用接口,实现接口建立不同的工厂)
满足开闭原则:对修改关闭,对扩展开放,但较为复杂,一般推荐使用简单工厂模式
前两者都只针对与一个产品。

③抽象工厂模式(具有多个产品,通过工厂可以创建多个产品)
针对于一条线上的多个产品,不能增加新的产品,只能增加产品族
UML:

建造者模式 (Builder(实现接口) + Director)

Builder : 创造组件(可与工厂模式联系)
Director :进行装配(返回装配成功后的对象)
UML:

原型模式(prototype)

通过new产生一个对象需要非常繁琐的数据准备或访问权限,则使用原型模式(进行克隆:类似于new,不同于new)
产生对象属性值相同,但存储位置不同,即引用不同,是两个不同的对象。

内存复制操作:
java中提供了clone()(必须实现Cloneable接口:标记接口)
重写clone()通过super调用基类clone(),将所得对象直接进行返回

@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}

ps: clone()方法是object的方法,本地方法
浅克隆:在克隆新的对象时,新旧两个对象引用属性所指向的是同一个数据
深克隆:克隆出的新的对象,将引用属性也进行拷贝
深克隆的实现:在clone()方法中,将对象的引用属性也进行clone操作
如:对于date对象

@Overrideprotected Object clone() throws CloneNotSupportedException {//将克隆对象的引用属性也进行克隆Object object = super.clone();PassiveDeepClone deep = (PassiveDeepClone)object;deep.whDate = (Date)this.whDate.clone();return deep;}

UML:

GOF之创建型模式(重点)相关推荐

  1. GoF的23种设计模式之创建型模式的特点和分类

    创建型模式的主要关注点是"怎样创建对象?",它的主要特点是"将对象的创建与使用分离".这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关 ...

  2. 设计模式之六个创建型模式的相关知识,简单易懂。

    一. 简单工厂模式-Simple Factory Pattern 1) 工厂三兄弟之简单工厂模式(一) 工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高 ...

  3. 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  4. 【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★

    文章目录 一.七大设计原则 1.开闭原则 2.依赖倒置原则 3.单一职责原则 4.接口隔离原则 5.迪米特原则 6.里氏替换原则 7.合成复用原则 二.创建型模式 0.简单工厂模式 ( 不属于 GOF ...

  5. 七大设计原则与设计模式(创建型模式、结构型模式、行为型模式)

    七大设计原则 开闭原则.依赖倒置原则.单一职责原则.接口隔离原则.迪米特法则(最少知道原则).里氏替换原则.合成 (组合).聚合复用原则 开闭原则 定义: 一个软件实体如类.模块和函数应该对扩展开放, ...

  6. Java设计模式之五大创建型模式(附实例和详解)

    一.概况 总体来说设计模式分为三大类: (1)创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. (2)结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥 ...

  7. 3创建型模式之单例模式

    概念 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象.也就是说,在整个程序空间中,该类只存在一个实例对象. GoF对单例模式的定义是:保证一个类.只有一个实例存在,同 ...

  8. 创建型模式---工厂模式

    从简单到复杂有简单工厂模式-->工厂方法模式-->抽象工厂模式 简单工厂模式(Simple Factory Pattern) 定义 又称为静态工厂方法(Static Factory Met ...

  9. C#面向对象设计模式纵横谈——Singleton单件(创建型模式)

    Singleton单件(创建型模式) 动机(Motivation) 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率. 如何绕过常规的 ...

最新文章

  1. P3201 [HNOI2009]梦幻布丁 [启发式合并][set]
  2. 谁在关心toString的性能?
  3. oracle表空间于表数据啥意思,初识Oracle表空间与数据文件
  4. CAS5.2x单点登录(一)——搭建cas服务器
  5. 微信小程序 map 点击图标回到自己的位置(不使用controls控件)
  6. 细细讲述Java技术开发的那些不为人知的规则
  7. 用 C# 来守护 Python 进程
  8. 08_JS工厂方法和构造函数
  9. java 属性默认_【急】求教如何设置javabean中某几个属性的默认值
  10. 微课|中学生可以这样学Python(1.4节):安装扩展库
  11. html中文本框冒号对齐,html5 冒号分隔符对齐的实现,
  12. 22男人应该明白的道理
  13. Hadoop只输出Key不输出Value的小技巧‏
  14. 信念很简单,把书念下去,然后走出去,不枉活一世 —转自动化所一篇博士论文致谢...
  15. 洛谷P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold
  16. 电子教室软件 android,超越电子教室
  17. wincc7.4安装记录
  18. 系统建模与仿真项目驱动设计报告-基于MATLAB的GUI界面设计
  19. oppo手机解锁_OPPO手机忘记解锁密码怎么办 解锁手机密码
  20. MQTT QoS(服务质量)介绍

热门文章

  1. DataGrip汉化方法
  2. BGP——ORF+条件路由过滤(讲解+配置)
  3. BGP——权重选路(讲解+配置命令)
  4. GPLT-天梯赛-题解目录
  5. 母函数 入门 + 模板
  6. mui switch 实现方案 让你的html 设计更贴近原生
  7. javascript 图表_我如何使用JavaScript数据透视表和图表库分析开发人员趋势
  8. 现实世界的数据结构:JavaScript中的表格和图形
  9. 任务完成从不加班_我如何从不知道如何编码转变为在9个月内交付9个项目-都在我15岁之前就完成了……...
  10. 124_Power PivotPower BI DAX优化计算最大连续次数