网站首页 > 技术教程 正文
设计模式分为三大类:创建型模式、结构型模式、行为型模式。每个分类的核心思想、目的、意义和使用场景各不相同,下面是对这些分类的详细解释:
1. 创建型模式
核心思想: 创建型模式处理对象的创建过程,旨在将对象的创建与使用分离,提供一种灵活的创建对象的方式,避免直接使用new关键字进行实例化。
目的: 控制对象创建的复杂性,通过提供灵活的创建对象方式,减少代码的耦合性,使得代码更加灵活和可扩展。
意义:
- 隐藏对象创建的具体过程,提供更为灵活的对象生成机制。
- 通过抽象化对象的创建,减少代码的重复性,提高系统的可维护性和可扩展性。
使用场景:
- 当对象创建过程较为复杂,且需要灵活控制时。
- 当对象的创建需要依赖于特定的配置或环境时。
- 当希望系统独立于对象创建的方式或过程时。
代表模式:
- 工厂方法模式: 通过定义一个接口或抽象类来创建对象,而不是在代码中直接使用new关键字。
- 抽象工厂模式: 提供一个接口来创建一系列相关或相互依赖的对象,而无需指定它们的具体类。
- 单例模式: 确保某个类只有一个实例,并提供一个全局访问点。
- 原型模式: 通过复制已有的实例来创建对象,而不需要通过类来实例化新对象。
- 建造者模式: 将复杂对象的创建过程与其表示分离,使得同样的创建过程可以创建不同的对象。
2. 结构型模式
核心思想: 结构型模式关注类和对象的组合,通过将对象和类结合在一起,形成更大的结构,以简化代码结构和实现对象之间的交互。
目的: 通过合理的类和对象组合,创建复杂的系统结构,简化系统的设计和实现,使得系统更易于扩展和维护。
意义:
- 提高代码的可复用性,减少冗余代码。
- 优化对象之间的关系,使得系统更易于理解和维护。
- 提供灵活的代码结构,能够应对系统的扩展需求。
使用场景:
- 当系统需要通过不同对象的组合来实现复杂功能时。
- 当希望系统的各个部分可以独立变化且组合灵活时。
- 当希望通过继承或组合来扩展现有系统的功能时。
代表模式:
- 适配器模式: 将一个类的接口转换为客户端所期待的另一种接口,从而使得原本因接口不兼容而无法一起工作的类可以协同工作。
- 桥接模式: 将抽象部分与它的实现部分分离,使它们可以独立变化。
- 组合模式: 通过将对象组合成树形结构来表示部分与整体的层次结构,使得客户端可以以统一的方式处理单个对象和组合对象。
- 装饰器模式: 动态地向对象添加额外的职责,而不影响其他对象的功能。
- 外观模式: 提供一个统一的接口,用来访问子系统中的一群接口,从而简化了客户端与复杂系统的交互。
- 享元模式: 通过共享细粒度对象来减少内存使用,适用于大量相似对象的场景。
- 代理模式: 为其他对象提供一种代理,以控制对这个对象的访问。
3. 行为型模式
核心思想: 行为型模式关注类和对象之间的交互与职责分配,定义了类和对象之间的通信方式,旨在解决对象间职责分配和行为划分的问题。
目的: 通过定义对象之间的通信和协作方式,分离对象的职责,使系统行为更加灵活和可扩展。
意义:
- 降低对象之间的耦合度,使得对象可以独立变化。
- 使得对象之间的职责分配更加清晰,提升系统的可读性和可维护性。
- 提供更加灵活的行为实现机制,方便系统的扩展和修改。
使用场景:
- 当系统中需要定义不同对象之间的交互和职责分配时。
- 当希望通过对象间的协作来实现复杂行为时。
- 当系统的行为随着对象状态变化而变化时。
代表模式:
- 责任链模式: 将请求沿着处理者链进行传递,直到某一对象处理它为止,避免了请求的发送者和接收者之间的耦合。
- 命令模式: 将一个请求封装成一个对象,从而使用户可以使用不同的请求、队列或者日志来参数化其他对象,并支持可撤销操作。
- 解释器模式: 给定一种语言,定义它的文法表示,并设计一个解释器来处理语言中的表达式。
- 迭代器模式: 提供一种顺序访问聚合对象中的各个元素的方法,而无需暴露其内部表示。
- 中介者模式: 用一个中介对象来封装一系列对象之间的交互,使对象之间不需要直接相互引用,从而减少它们之间的耦合。
- 备忘录模式: 在不破坏封装的前提下,捕获并保存一个对象的内部状态,以便可以在以后恢复到原先的状态。
- 观察者模式: 定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。
- 状态模式: 允许对象在内部状态改变时改变其行为。
- 策略模式: 定义一系列算法,并将它们封装起来,使得它们可以互换。
- 模板方法模式: 定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重新定义算法的某些步骤。
- 访问者模式: 表示一个作用于某对象结构中的各元素的操作,使得可以在不改变各元素类的前提下定义作用于这些元素的新操作。
总结
- 创建型模式: 重点在于对象的创建,解决对象创建的复杂性,提高对象的可扩展性。
- 结构型模式: 重点在于对象之间的组合,优化系统的结构,提高代码的可复用性和灵活性。
- 行为型模式: 重点在于对象之间的职责分配和交互,降低系统的耦合度,提高系统行为的灵活性。
每种模式都能在特定场景下提高系统的可维护性、可扩展性和灵活性,使得设计更加符合面向对象编程的思想。
猜你喜欢
- 2024-10-06 设计模式归类讨论&适用场景分析
- 2024-10-06 设计模式概念、分类、设计原则介绍
- 2024-10-06 29 设计模式——行为型模式概述(行为型模式的分类)
- 2024-10-06 「41期」卡模式之年卡模式和分类模式
- 2024-10-06 电气技术之供电方式的基本分类及功能详解,老电工都未必弄得清!
- 2024-10-06 一文击碎设计模式-03模式分类 23种设计模式知识点
- 2024-10-06 商业模式的分类 商业模式分为
- 2024-10-06 C#知识|设计模式的分类及认识 c#设计模式有哪些
- 2024-10-06 23 种设计模式的分类和功能 23种设计模式如何分类
- 2024-10-06 如何用一句话总结23种设计模式 用设计模式的思想阐述一个软件
你 发表评论:
欢迎- 05-1613步震撼淘宝大促闪光裂纹破墙立体字PS制作教程
- 05-16AI教程 | 绘制扁平的萌萌哒图标
- 05-160基础学平面设计所需了解的基础常识汇总
- 05-16自学平面设计需要多长时间?十六年职业设计总监告诉你
- 05-16平面设计都要学习哪些内容?
- 05-16李涛PS教程 高手之路PS教程 合成教程 —制作一个小星球
- 05-16Illustrator实例教程:制作炫酷的漩涡效果
- 05-16Illustrator实例教程:利用混合工具制作一朵炫酷的花
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)