【HeadFirst系列之HeadFirst设计模式】第1天之HeadFirst设计模式开胃菜

news/2025/1/7 16:51:21/

HeadFirst设计模式开胃菜

前言

在这里插入图片描述
在这里插入图片描述

从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。

今天要分享的是【HeadFirst设计模式开胃菜】,主要介绍了设计模式的基本概念、设计模式的四人组、HeadFirst设计模式的作者简介、面向对象的基本概念和原则等内容。

设计模式四人组(设计模式书籍作者)

  • Erich Gamma

    在这里插入图片描述

  • Richard Helm

    在这里插入图片描述

  • Ralph Johnson

    在这里插入图片描述

  • John Vlissides

    在这里插入图片描述

HeadFirst设计模式作者简介

  • Eric Freeman

    在这里插入图片描述在这里插入图片描述

  • Elisabeth Freeman
    在这里插入图片描述

  • Kathy Sierra
    在这里插入图片描述
    在这里插入图片描述

  • Bert Bates
    在这里插入图片描述

OO基本概念

  • 抽象

抽象是隐藏实现细节的过程,只向用户公开功能。

在面向对象编程中,抽象是通过定义类和接口来实现的。

用户只知道对象的功能,而不需要了解其内部实现细节‌

  • 封装

封装是将数据和代码封装到一个单元中的过程。

通过封装,可以限制对对象内部状态的直接访问,只能通过定义好的接口进行操作。

封装可以提高代码的安全性,并隐藏实现的细节‌

  • 继承

继承允许一个类(子类)继承另一个类(父类)的属性和方法。

通过继承,可以复用代码,减少重复,并实现代码的模块化。

子类可以扩展或修改父类的行为,实现代码的扩展性‌

  • 多态

多态是指允许不同类的对象对同一消息做出响应。

在面向对象编程中,多态通过接口和继承实现。

不同的对象可以对相同的函数调用做出不同的响应,增加了程序的灵活性和可扩展性‌

OO原则

  • 单一职责原则(Single Responsibility Principle, SRP)

一个类应该只负责一个单一的功能或职责。

通过将不同的职责分离到不同的类中,可以提高代码的可读性、可维护性和可扩展性,并降低系统的耦合性‌

  • 开闭原则(Open-Closed Principle, OCP)

软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。

这意味着软件实体应该通过扩展来满足新的需求,而不是修改已有的代码‌

  • ‌里氏替换原则(Liskov Substitution Principle, LSP)

子类必须能够替换其父类并且表现出相同的行为。

这意味着在程序中,使用子类的地方应该能够完全替换为父类,而不会影响程序的正确性‌

  • 依赖倒置原则(Dependency Inversion Principle, DIP)

高层模块不应该依赖于底层模块,两者都应该依赖于抽象。

抽象不应该依赖于具体实现,具体实现应该依赖于抽象‌

  • 接口隔离原则(Interface Segregation Principle, ISP)

一个类不应该依赖于它不需要的接口。

接口应该被拆分成更小的、更具体的接口,以满足不同类的需求‌

  • 合成复用原则(Composite Reuse Principle, CRP)

尽量使用对象组合而不是继承来实现代码复用。

对象组合可以让类之间的耦合度更低,更加灵活‌

  • 迪米特法则(Law of Demeter, LoD)

一个对象应该只与它直接依赖的对象进行交互,不应该了解其他对象的实现细节。

尽量减少对象之间的耦合度‌

  • 重用/释放等价原则(Acquire-Release Equivalence Principle, ARE)

在使用某个资源时,必须同时负责该资源的获取和释放。

如果一个对象负责获取某个资源,那么它也应该负责释放该资源‌

  • 单例模式原则(Singleton Pattern Principle)

确保一个类只有一个实例,并提供全局访问点。

单例模式可以避免不必要的对象创建,从而提高程序的性能‌

设计模式分类

在这里插入图片描述

专业术语

  • OO:Object-Oriented,面向对象
  • UML: Unified Modeling Language,统一建模语言

专业作图工具

  • ProcessOn
  • starUML

HeadFirst设计模式在线版电子书

HeadFirst设计模式在线版电子书


http://www.ppmy.cn/news/1560977.html

相关文章

qemu-kvm使用简介

qemu-kvm-note qemu-kvm使用简介 kvm和qemu关系 kvm是linux的一个模块,是工作在cpu硬件支持基础之上的虚拟化技术。加载该模块后,才能进一步通过其他工具创建虚拟机。仅有kvm模块,用户无法直接控制内核模块,必须有一个用户空间…

计算机网络——数据链路层-介质访问控制

一、介质访问控制方法 在局域网中, 介质访问控制(medium access control)简称MAC,也就是信道访问控制方法,可以 简单的把它理解为如何控制网络节点何时发送数据、如何传输数据以及怎样在介质上接收数据, 是解决当局域网中共用信道的使用产生竞…

论文研读:Text2Video-Zero 无需微调,仅改动<文生图模型>推理函数实现文生视频(Arxiv 2023-03-23)

论文名:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators 1. 摘要 1.1 方法总结 通过潜空间插值, 实现动作连续帧。 以第一帧为锚定,替换原模型的self-attention,改为cross-attention 实现 保证图片整体场…

Python中的ast.literal_eval:安全地解析字符串为Python对象

Python中的ast.literal_eval:安全地解析字符串为Python对象 什么是ast.literal_eval?为什么说它是“安全”的? 如何使用ast.literal_eval?示例1:将字符串转换为列表示例2:将字符串转换为字典示例3&#xff…

适配器模式(类适配器,对象适配器)

1. 适配器模式简介 适配器模式用于解决接口不兼容问题,将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以协同工作。适配器模式主要分为两类: 类适配器模式:通过继承适配者类来实现适配。…

25考研希望渺茫,工作 VS 二战,怎么选?

25考研希望不大,找工作VS二战,怎么选? 考研落幕,今年的考研可谓是难上加难,很多人甚至发出灵魂三问,直击25考研出题组 因为题难,感觉今年希望不大,也不想调剂,是就业好呢…

STM32-ADC模数转换

定义: ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC【表示转化的范围是0-2^12 - 1】,1us转换时间 输…

GNU链接器简介

GNU链接器简介 1 使用简单程序简介链接脚本1.1 测试程序1.2 编译测试程序1.2.1 不使用链接器编译1.2.1.1 不使用链接器编译1.2.1.2 读取objdump_test 的结构 1.2.2 使用链接器去链接1.2.2.1 链接脚本1.2.2.2 使用链接脚本编译1.2.2.3 读取objdump 的结构 2 链接脚本2.1 基本连接…