【9-1:读懂-设计模式】

一、设计模式

1.1 设计模式对比

创建型对比

定义:创建型提供创建对象的机制,提升已有代码的灵活性和可复用性

模式定义优点缺点应用场景
单例模式确保一个类仅有一个实例,并提供一个全局访问点节约系统资源,提高系统性能;提供对唯一实例的受控访问不易扩展,特别是当需要不同实例时;滥用单例可能会导致资源溢出或状态丢失系统只需一个实例对象,如配置文件的读取、数据库连接池等
工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类隐藏了对象的创建细节,降低了耦合度;易于扩展,增加新产品时只需添加新的具体工厂和具体产品增加了系统的复杂度,因为每增加一个产品,就需要增加一个具体工厂和具体产品客户端不知道它所需要的对象的类
抽象工厂模式供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类易于交换产品系列,分离了具体类的创建和使用增加了系统的抽象性和理解难度,需要添加新产品族时,需要修改抽象工厂的接口系统功能结构稳定,不需要频繁新增功能,但需要支持多种产品族
原型模式(Prototype)通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象创建通过复制,提高了新建的效率每个类都需要实现克隆方法,增加了实现的复杂度对象相似,可以通过复制加修改实现的对象创建
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示封装了复杂对象的创建过程,易于扩展,增加新的构建部分不需要修改现有的类如果产品内部变化复杂,会增加系统的难度和运行成本创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式

结构型对比

结构型模式用于描述如何将类或对象结合在一起形成更大的结构

模式定义优点缺点应用场景
代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问降低耦合度,扩展性好处理速度可能变慢,因为需要通过代理访问实际对象远程代理,虚拟代理,安全代理等
工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类隐藏了对象的创建细节,降低了耦合度;易于扩展,增加新产品时只需添加新的具体工厂和具体产品增加了系统的复杂度,因为每增加一个产品,就需要增加一个具体工厂和具体产品客户端不知道它所需要的对象的类
适配器模式(Adapter)将一个类的接口转换成客户端所期待的另一种接口形式,使因接口不匹配而不能在一起工作的类可以一起工作灵活性、扩展性好不支持多重继承系统的数据和行为都正确,但接口不符
装饰模式(Decorator)动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活装饰类和被装饰类可以独立发展,不会相互耦合会产生较多的装饰类封装了复杂对象的创建过程,易于扩展,增加新的构建部分不需要修改现有的类

行为型模式

负责对象间的高效沟通和职责传递委派

模式定义优点
策略模式(Strategy)定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户算法可以独立变化,不影响客户端

1.2 基础概念

什么是设计模式

  1. 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是在不同场景下编码的最佳实践
  2. 要解決的都是代码的复用性、扩展性、可读性、可维护性等问题

单一职责

就是一个类进项职责一个业务,具体场景具体分析

设计原则:开闭原则

任何软件会随着时间的推移发生变化
开闭原则规定软件中的对象类模块和函数都是开放的,但对于修改时封闭的:意思就是新增功能不能戳原有代码结构有致命性的更改
本质上时面向抽象编码

其它设计原则

  1. 里氏替换:指导在继承中子类如何设计
  2. 接口隔离:接口设计尽量单一【结合实际】
  3. 依赖倒转:面向抽象编程
  4. 迪米特法则:降低耦合
  5. 合成复用:用对象组合来达到复用目的

1.3 创建型常见的模式

工厂模式

  • 提供了按需创建对象的最佳方式,屏蔽对象的创建细节
  • 对象的创建用户可以通过new的方式,也可以通过reflection方式,那么什么时候使用工厂模式呢
    • 仅仅完成实例化还不够,还需要做一些其他操作才能对外提供使用,比如:有一定的初始化逻辑,需要包装一些级功能【Spring bean–>实例化后需要执行各种接口回调,完成依赖注入等操作后才对外提供】
    • 根据不同的参数或配置来个性化的创建你需要的对象【比如:创建不同但是类型相关的对象(继承同一父类或接口的一组类),可以由参数来决定具体创建哪种类型的对象】

构建者模式

  1. 可以做到将一个对象的创建过程进行分离,也可以做到通过多个简单对象一步步组装出一个复杂对象
  2. lombok 插件提供了Builder注解可以使我们很方便的使用Builder模式创建对象

单例模式

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Autosar是汽车行业广泛使用的一种软件架构标准,旨在提高汽车电子系统的可靠性和可维护性。它通过提供标准化的接口和通信协议,使得不同厂家和供应商开发的软件和硬件组件可以相容且互操作。Autosar标准包含了许多不同的模块和组件,它们分别负责不同的功能,如通信、诊断、操作系统等。要读懂Autosar代码,首先需要了解Autosar标准的整体架构和各个模块之间的关系。 在阅读Autosar代码时,需要熟悉标准中定义的各种接口和数据结构,了解它们的作用和用法。此外,还需要理解Autosar中使用的不同软件架构模式和设计模式,例如发布订阅模式、状态机模式等。很多Autosar代码都会按照这些模式进行设计和实现,因此读懂这些模式对于理解代码至关重要。 此外,由于Autosar标准是由多个汽车厂商和供应商共同制定和维护的,因此在阅读Autosar代码时还需要关注不同厂商或供应商对标准的实现方式和扩展。虽然Autosar标准化了接口和通信协议,但在实际应用中仍然存在一些厂商特定的实现和扩展,这些内容也需要在阅读代码时予以理解。 总之,要读懂Autosar代码,需要对Autosar标准有深入的了解,包括整体架构、各种接口和数据结构、软件架构模式和设计模式,以及不同厂商或供应商的实现方式和扩展。同时,也需要对汽车行业的背景和需求有一定的了解,这样才能更好地理解Autosar代码的含义和用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lweiwei@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值