博客
关于我
23种设计模式概述
阅读量:798 次
发布时间:2023-04-16

本文共 1819 字,大约阅读时间需要 6 分钟。

设计模式是软件开发中的一种常用方法,它通过抽象和封装的方式,解决实际应用中遇到的问题。以下是一些常见的设计模式及其简要说明:

1. Abstract Factory模式

提供创建一系列相关或相互依赖对象的接口,但并未具体指明哪个类将被实例化。这种方式能够在不暴露具体实现的情况下,允许客户选择不同厂商的产品。

2. Adapter模式

将一个类的接口转换为客户希望的另一个接口。Adapter模式允许原本因接口不兼容而无法协同工作的类能够共同运作。

3. Bridge模式

将抽象部分与其实现部分分离,使得抽象部分可以独立变化,而实现部分也能够独立变化。这种结构使得系统的耦合度降低,灵活性提高。

4. Builder模式

将一个复杂对象的构建过程与其表示分离。通过Builder模式,可以在不暴露对象内部构建细节的情况下,创建不同的表示形式。

5. Chain of Responsibility模式

解除请求发送者和接收者之间的耦合。通过将多个对象串联成一条链,请求可以沿着链传递,直到有对象能够处理它。

6. Command模式

将请求封装为一个对象,使其能够被参数化、排队、记录日志或取消。这种方式使得系统能够灵活管理和执行多种操作。

7. Composite模式

将多个对象组合成树形结构,表示“部分-整体”关系。Composite模式提供了一致的接口,使得单个对象和复合对象的使用方式相同。

8. Decorator模式

动态地给一个对象添加额外职责。Decorator模式比继承方式更为灵活,使得系统能够在运行时扩展功能。

9. Facade模式

为子系统提供一个统一的接口,简化子系统的使用。Facade模式使得复杂的子系统能够被更容易地访问和管理。

10. Factory Method模式

定义一个用于创建对象的接口,让子类决定具体创建哪个类实例。这种方式使得对象的创建过程被封装,延迟了实例化的过程。

11. Flyweight模式

通过共享技术支持大量细粒度的对象。Flyweight模式能够有效地管理大量对象,减少内存占用。

12. Interpreter模式

定义一种语言的语法表示,并提供解释器来解释语言句子。这种模式可以用来解析和执行特定的语言规则。

13. Iterator模式

提供一种方式,能够顺序访问一个聚合对象中的各个元素,而无需暴露对象的内部结构。Iterator模式使得集合的访问方式统一。

14. Mediator模式

用中介对象封装一系列对象的交互,使得对象之间的耦合度降低。Mediator模式允许对象之间的交互方式在不直接相互依赖的情况下进行。

15. Memento模式

在不破坏封装性的前提下,捕获对象的内部状态,并在外部保存。Memento模式允许对象恢复到之前保存的状态。

16. Observer模式

定义对象之间的一对多依赖关系。当一个对象的状态改变时,所有依赖于它的对象都能得到通知并进行相应操作。

17. Prototype模式

用原型实例指定对象的创建类型,并通过拷贝原型来创建新对象。这种方式避免了新对象的创建需要显式地指定类实例。

18. Proxy模式

为其他对象提供一个代理,以控制对该对象的访问。Proxy模式可以用来进行安全、性能优化或其他方面的增强。

19. Singleton模式

保证一个类仅有一个实例,并提供一个全局访问点。Singleton模式常用于资源管理,以确保资源只使用一个实例。

20. State模式

允许一个对象在其内部状态改变时,改变其行为。这种方式使得对象看起来像是在修改它所属的类,提升了灵活性。

21. Strategy模式

定义一系列算法,并将它们封装起来,使得算法的变化独立于使用它们的客户。Strategy模式允许在运行时选择不同的算法。

22. Template Method模式

定义一个操作的算法骨架,延迟某些步骤的执行。Template Method模式允许子类在不改变算法结构的情况下,重定义算法的特定步骤。

23. Visitor模式

表示一个作用于某对象结构中的各元素的操作。Visitor模式使得可以在不修改元素的类的情况下,为这些元素定义新的操作。

这些设计模式为软件开发提供了丰富的思路和解决方案,能够帮助开发者应对各种复杂的应用场景。通过合理选择和应用设计模式,可以使系统更加灵活、可扩展和高效。

转载地址:http://rjgfk.baihongyu.com/

你可能感兴趣的文章
Mysql执行计划字段解释
查看>>
mysql执行计划怎么看
查看>>
MySQL执行计划解读
查看>>
mysql执行顺序与索引算法
查看>>
mysql批量update优化_Mysql中,21个写SQL的好习惯,你值得拥有呀
查看>>
mysql批量update操作时出现锁表
查看>>
MYSQL批量UPDATE的两种方式
查看>>
mysql批量修改字段名(列名)
查看>>
MySQL批量插入数据遇到错误1213的解决方法
查看>>
mysql技能梳理
查看>>
MySQL报Got an error reading communication packets错
查看>>
Mysql报错Can‘t create/write to file ‘/tmp/#sql_3a8_0.MYD‘ (Errcode: 28 - No space left on device)
查看>>
MySql报错Deadlock found when trying to get lock; try restarting transaction 的问题解决
查看>>
MySQL报错ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘
查看>>
Mysql报错Packet for query is too large问题解决
查看>>
mysql报错级别_更改MySQL日志错误级别记录非法登陆(Access denied)
查看>>
Mysql报错:too many connections
查看>>
MySQL报错:无法启动MySQL服务
查看>>
mysql授权用户,创建用户名密码,授权单个数据库,授权多个数据库
查看>>
mysql排序查询
查看>>