设计模式-GOF23最常用对比

设计模式概述

  • 设计模式用最简单的话来说 设计模式 就是很多前人总结的经验是一种编程技巧 , 不用把设计模式看的太过于高深 , 开发过程遇到的场景 ,合理运用这种经验可以提升软件质量 , 让软件变得易于维护我将设计模式称之为经验 , 进行替换我认为更加恰当。

设计模式实际可运用的场景

  • 任何技术都是为业务服务的,如果技术不能给业务带来实际好处,那么这个技术将没有存在的意义。
  • 我这里举例最常用的GOF 23 中设计模式中 的场景 , 包括各种框架中也频繁的使用这种经验。

1.单例模式

好处

  • 使用单例模式可以 减少内存开销 , 提升程序的性能 , 从底层说 jvm 开辟一块内存 会涉及到 内存的申请 赋值 与 释放 , 与构造方法调用 ,如果同一块内存空间可以被复用,将减少软件的执行时间,和内存使用成本 属于一种优化策略。

使用场景
1.工具类
2.公共对象 比如 商品信息,网站菜单 ,网站新闻 , 解决方案 ,公用图片。
3.注册式单例 用户信息的存储。

2.原型模式
好处
1.节省程序中操作数据时需要大量的开辟对象 , 可以节省对象的开辟时间,提高程序性能。

使用场景
1.用户信息批量上传 , 比如excel 上传用户信息 , 大量的创建对象。
2.列表信息 集合信息 对象申请。

工厂模式
工厂模式包含 工厂方法 与 抽象工厂
好处
1.统一对象的访问入口 , 把管理权交给工厂 , 客户端程序员对对象的访问通过工厂访问 , 可以控制对象的开辟使用对程序对象进行解耦。

工厂方法
争对某一种对象进行管理创建

抽象工厂
多元化的对象创建,不同产品类型 产品结构进行创建 ,但是会增加程序的复杂度,可以对程序结构。

使用场景
1.网页返回信息对象统一 , 对象属性 msg code success 。
2.spring ioc 的基本原理 , 注册式单例 与 工厂模式

代理模式
好处
1.业务逻辑解耦合,提取出公共部分 , 让开发人员注重代码的业务逻辑,精简代码,大大提升了程序的可维护性。

使用场景
1.拦截器
2.过滤器
3.日志信息读取写入。
4.身份校验。
5.jdbc 连接数据库 , 释放资源。
6.权限控制。

策略模式
好处
封装不同算法 , 每个算法相互隔离 , 用户选择其中一种算法,进行使用,一般用于减少程序中的 if else , 同时也可以对 代码拆分减少程序的维护成本。

使用场景
1.支付场景 ,用户选择支付方式 , 支付宝 , 银行卡 , 微信。
2.打开方式 , 记事本打开 , 专用编辑器打开, 集成开发工具打开。
3.文件读取解析方式 , 读取 xml 文件 , 读取json 文件 , 读取Properties 文件 , 读取 yml 文件。

适配器模式
好处

  • 不影响之前的行为属性,在其之上做一层封装 , 让其可对其他不同场景兼容。

使用场景
1.一个接口的使用者需要变更接口当中的数据结构 , 但是接口一般时发布出来就不会轻易进行修改的 , 如果在原接口的基础上变更,可能会在不经意直接影响其他服务,变更的风险较大,并且不好排查,可新写一个适配器进行处理,让其兼容新的使用者。

门面模式
好处
1.客户端统一数据来源,将要使用的数据经过处理通过统一的接口返回,减少了接口的调用频率 , 提升程序性能, 与代码的简洁性。

使用场景
1.业务架构三层 controller service dao。
2.http 数据接口。

享元模式
好处
1.减少对象的开辟 ,提升对象的重复使用率 ,减少内存使用率, 可以理解为 注册式单例。

使用场景
1.ioc 容器
2.内存穿透场景。 先从缓存读取如果缓存没有再从数据库读取 , 最后缓存到缓存。

模板方法模式
好处
1.程序员只需要设置好模板 , 之后往模板里面填充 一步步的数据操作 , 程序逻辑执行有条理 , 从上至下 , 类似于模块化无状态, 各个操作解耦合, 可以快速定位问题所在。

使用场景
1.支付场景
1.校验用户信息完整性
2.校验数据完整性
3.对数据加锁 , 下支付订单。
4.收到支付结果,修改订单状态,生成订单完成对象返回。

备忘录模式
作用
备忘录模式使用的场景很少,类似于回滚操作

  • 返回对象上一次的修改状态。

使用场景
富文本编辑器 的 ctrl + z
存档功能,还原功能,快照

建造者模式
好处

  • 自定义构建对象的过程,专注于对象的创建过程, 工厂专注于对向的获得。

使用场景
链式编程

1.student.setName(“张三”).setAge(18).setSex(0)

装饰者模式
好处
装饰对象 与 装饰品进行解耦合 , 用户灵活定制装饰对象,扩展装饰品,大大的提升了程序的灵活性。

使用场景
游戏人物装备的装饰 , 装饰服饰 , 装饰装备 , 服饰装备 人物 有多种最终的被装饰的结果 , 这个时候可以使用装饰者模式灵活的去扩展。

观察者模式
JDK 提供观察者接口 与 被观察者类
使用该模式可以观察对象的使用状态 , 在对象行为发生改变触发的时候通知观察者对象,进行相关处理。

使用场景
发布订阅模式是最常用的一种观察者模式的实现
消息推送

委派模式 与 简单工厂模式不属于 GOF 23 种设计模式之一。

委派模式可以理解为 全权静态代理模式 , 代理模式注重于代码增强 ,委派模式注重于结果。

简单工厂,快速生产对象。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 设计模式是软件开发中常用的一种解决方案,它们是一些经过实践验证的可复用设计思想。设计模式允许开发人员在类和对象的结构上灵活地更改,并提供了一种优雅的解决方案来应对各种软件开发问题。 GOF(Gang of Four)是指Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位软件工程师,他们在《设计模式:可复用面向对象软件的基础》一书中总结了23种常见的设计模式,这本书因此而获得了“设计模式圣经”的称号。 这本书以案例为基础,深入浅出地讲解了每个设计模式的原理和应用场景,并提供了C++实现源码。 其中,创建型设计模式包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。这些模式都提供了一种方式来创建对象,使得程序在实例化对象时更加灵活和可扩展。 结构型设计模式包括适配器模式、装饰器模式、代理模式、组合模式、享元模式和外观模式。这些模式关注如何通过类和对象的组合来创建更大的结构,并提供了一种优雅的方式来简化系统的复杂性。 行为型设计模式包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式和中介者模式。这些模式关注对象之间的通信和交互,它们提供了一种优雅的方式来实现松耦合和可维护的代码。 总之,设计模式是软件开发中非常重要的一部分,它们提供了一种通用的解决方案来处理常见的设计问题。通过学习和应用设计模式,开发人员可以提高代码的可复用性、可扩展性和可维护性,并加快开发进度。 ### 回答2: 设计模式是软件开发中常用的解决问题的一种思维方式或者说是一种已被证实有效的解决问题的方法。GOF 23种设计模式是由四位著名的软件工程师提出并总结出的一套经典的设计模式。 GOF 23种设计模式分别是创建型模式、结构型模式和行为型模式。创建型模式包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式。结构型模式包括适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式和代理模式。行为型模式包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。 GOF 23种设计模式具有不同的应用场景和优势。通过学习和理解这些设计模式,开发者可以更加灵活地应对各种软件开发中的问题。同时,掌握这些设计模式也有助于提高代码的可读性、可维护性和可扩展性。 附带C语言实现源码是一种更加具体的学习和理解设计模式的方法。通过查看实现源码,可以更加直观地看到设计模式在实践中的应用。这些源码可以作为学习的参考,帮助开发者更好地理解设计模式的思想和使用方式。 总之,设计模式是软件开发中非常重要的一部分,通过学习GOF 23种设计模式并理解其应用场景和优势,可以提高软件开发的效率和质量。附带C语言实现源码能够更加具体地帮助开发者理解设计模式的实际应用。 ### 回答3: 设计模式是软件工程中常用的一种设计思想或模板,可以用于解决特定的问题和提供可重用的解决方案。GOF(Gang of Four)提出了23种设计模式,并在书籍《设计模式:可复用面向对象软件的基础》中进行了详细的解析和说明。 这本书详细地介绍了23种设计模式,包括创建型模式、结构型模式和行为型模式。通过阅读这本书,读者可以了解每种设计模式的特点、适用场景和实现方法。另外,书中还通过示例代码的方式演示了每种设计模式的具体实现,并提供了附带的C语言实现源码。 这本书对于理解设计模式的概念和思想非常有帮助。它不仅提供了23种设计模式的名字和简介,还详细解释了每种模式的适用场景和应用案例。读者可以通过学习这些设计模式,了解如何将它们应用于自己的软件开发工作中,提高代码的可重用性和可维护性。 书中的C语言实现源码是帮助读者理解和实践设计模式的重要资源。通过阅读源码,读者可以更加深入地理解每种设计模式的具体实现细节,并进一步提升自己的编程能力。 总之,通过学习《设计模式:可复用面向对象软件的基础》这本书,读者可以全面了解设计模式的概念、分类和实现方法,并通过阅读附带的C语言实现源码来加深对设计模式的理解和应用。这将对提升软件设计和开发的能力和水平非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值