设计模式之单例,工厂,抽象工厂,观察

设计模式之单例,工厂,抽象工厂,观察,第1张

设计模式之单例,工厂,抽象工厂,观察 设计模式

设计原则:高内聚,低耦合

设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路

GoF23

它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

单例模式

当在高并发的情况下,假设一秒钟main方法执行了上千次/上万次user对象反复创建,对资源占用严重

这就需要我们使用单例模式:只创建一个对象

创建形式:饿汉式,懒汉式

饿汉式

类加载时创建

创建的时机不一样

  • 私有化的静态属性

  • 私有化构造方法(在别的类中不可以创建对象)

  • 提供一个公开的静态的方法(返回1步骤中的对象属性)

在其他类中创建对象时不可以new

懒汉式

线程不安全

  • 私有化静态属性
  • 私有化构造方法(再别的类中无法创建对象)
  • 提供公开的静态的方法(返回1中对象属性)

返回对象的方法在第一次被调用时才会创建对象,后续直接返回第一次调用的对象

调用时创建

升级版线程安全的懒汉式 synchronized,相对于降低效率

双检锁double-check

饿汉式,懒汉式(线程安全的,线程不安全,双重校验—double check)

简单工厂模式

用途:主要解决接口选择的问题。在不同情况下创建不同的实现类对象

步骤

  • 一个接口多个实现
  • 创建一个工厂类,工厂类中包含公开的静态的方法(返回值接口类型,方法包含参数:根据不同的情况)
  • 方法体中分析不同的情况,创建不同的接口实现类对象
  • 将创建的实现类对象返回出去
抽象工厂模式

一个工厂已经解决不了问题

理解:工厂的工厂 ,如何选择工厂

观察者模式

解决的问题:当对象存在一对多时,一的对象发生改变时,所有依赖这个对象的其他对象都会得到通知

班级dept(一)对应学生student(多)班级地址改了;学生都应该得到通知;

观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。

别名

  • 发布-订阅(Publish/Subscribe)模式
  • 模型-视图(Model/View)模式
  • 源-监听器(Source/Listener)模式
  • 从属者(Dependents)模式

开闭原则:对扩展开放,对修改关闭

里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立

依赖倒置原则:要面向接口编程,不要面向实现编程。

单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性。

接口隔离原则:要为各个类建立它们需要的专用接口

迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话。

合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5681077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存