
设计模式
文章平均质量分 88
设计模式相关
Winemonk
github - https://github.com/Winemonk
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
23种设计模式详解
创建型模式关注对象的创建过程,旨在使对象的创建与使用分离,避免系统与具体类之间的紧密耦合。工厂方法模式(Factory Method):定义一个创建对象的接口,但由子类决定实例化哪个类。抽象工厂模式(Abstract Factory):提供一个创建一系列相关或依赖对象的接口,而无需指定它们的具体类。单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。建造者模式(Builder):将复杂对象的创建与其表示分离,使得同样的构建过程可以创建不同的表示。原创 2024-09-12 11:40:03 · 1846 阅读 · 0 评论 -
设计模式 23 访问者模式
访问者模式通过引入一个访问者接口,使得你可以在元素类中接受访问者,并让访问者决定对元素的具体操作。访问者模式的关键在于分离算法和数据结构,使得新的操作可以轻松地添加而不影响已有的数据结构。访问者模式通过将操作分离到独立的访问者对象中,使得在不修改元素类的情况下,可以增加新的操作。它适用于对象结构稳定但操作经常变化的场景。然而,由于需要对每个元素类增加接受访问者的方法,并且可能导致违反开闭原则,因此在使用时需要权衡利弊。在需要对复杂对象结构进行扩展和管理时,访问者模式是一种强大的设计模式。原创 2024-09-10 13:35:24 · 1876 阅读 · 0 评论 -
设计模式 22 模板方法模式
模板方法模式通过在基类中定义一个模板方法,该方法封装了一个算法的固定步骤,然后允许子类实现或重写这些步骤。这样,子类可以定制算法的具体行为,而无需改变算法的整体结构。模板方法模式通过将通用的算法步骤封装到抽象类中,允许子类重写或扩展特定的步骤,实现了算法的复用和扩展。它确保了算法的整体结构不被破坏,同时为子类提供了灵活性。在多个类具有相似的操作步骤时,模板方法模式是一种非常有效的设计模式。原创 2024-09-10 13:34:28 · 4941 阅读 · 0 评论 -
设计模式 21 策略模式
策略模式的核心思想是将不同的算法或行为封装到独立的策略类中,并通过上下文类来管理和使用这些策略。客户端可以通过上下文类来动态选择使用哪种策略,而无需关心策略的具体实现细节。策略模式通过将不同的算法封装到独立的策略类中,实现了算法的灵活互换。它消除了大量的条件分支语句,使代码更加清晰和可扩展。尽管策略模式可能会增加类的数量,但它为系统的算法选择和扩展提供了一种灵活且强大的解决方案。在需要灵活选择算法或行为的场景中,策略模式是一种非常有效的设计模式。原创 2024-09-09 11:58:35 · 1448 阅读 · 0 评论 -
设计模式 20 状态模式
状态模式的核心思想是将与状态相关的行为封装在独立的状态对象中,并通过状态对象来管理对象的状态转换。这样,原始对象在其状态发生变化时,会自动切换到对应的状态对象,从而表现出不同的行为。状态模式通过将状态相关的行为封装在独立的状态对象中,简化了对象的状态管理逻辑。它消除了大量的条件分支语句,使代码更加清晰和易于扩展。尽管状态模式可能会增加类的数量,但它为管理复杂的状态转换逻辑提供了一种灵活且有效的解决方案。原创 2024-09-09 11:57:41 · 1550 阅读 · 0 评论 -
设计模式 19 观察者模式
观察者模式的核心思想是当一个对象(被观察者)的状态改变时,所有依赖于它的对象(观察者)都会被通知并更新。这样一来,观察者模式实现了对象之间的松散耦合,使得一个对象的变化可以自动地传播到相关的对象。观察者模式通过定义一对多的依赖关系,实现了对象间的松散耦合和动态通信。它允许对象自动通知相关的依赖对象并更新状态,非常适合用于事件驱动的系统和需要动态更新的场景。尽管可能会带来一定的通知开销和复杂性管理,但它依然是实现对象间动态通信的强大工具。原创 2024-09-04 16:11:06 · 1156 阅读 · 0 评论 -
设计模式 18 备忘录模式
备忘录模式的核心思想是将对象的状态保存在一个备忘录对象中,并允许在未来的某个时刻恢复该状态。备忘录模式保证了状态的封装性,外部对象无法直接访问备忘录中的内容,从而保护了原发器对象的内部细节。备忘录模式通过保存对象的状态,提供了恢复该状态的机制。它通过封装状态,确保了对象内部细节的保护,同时又允许状态的恢复。该模式非常适合用于实现“撤销/恢复”功能,并在需要管理复杂状态变更的场景中提供了很好的解决方案。原创 2024-09-02 15:11:58 · 1297 阅读 · 0 评论 -
设计模式 17 中介者模式
中介者模式将系统中多个对象之间复杂的交互和依赖关系抽象为一个中介者对象,各个对象不直接引用彼此,而是通过中介者进行通信。这样做可以减少对象之间的直接依赖,从而使系统更加易于维护和扩展。中介者模式通过引入中介者对象来协调多个对象之间的交互,减少了对象之间的耦合度,并使系统更具可维护性和可扩展性。尽管中介者模式能够简化对象的交互逻辑,但需要注意中介者对象的复杂性管理,以避免其变得过于庞大。原创 2024-09-02 15:10:42 · 1412 阅读 · 0 评论 -
设计模式 16 迭代器模式
迭代器模式的核心思想是提供一种统一的接口来遍历聚合对象中的元素,而不需要了解聚合对象的内部结构。通过这种方式,集合和遍历算法之间解耦,遍历的方式可以更容易地改变或扩展。迭代器模式提供了一种遍历聚合对象的标准方法,通过解耦遍历逻辑和聚合对象的实现,增强了系统的灵活性和可扩展性。该模式特别适合需要在不暴露对象内部结构的情况下对对象进行遍历的场景。原创 2024-08-30 16:48:22 · 1028 阅读 · 0 评论 -
设计模式 15 解释器模式
解释器模式通过定义一种语言的语法规则,使用这些规则解析和执行语言中的语句。这种模式通常用于那些具有简单语法和小型命令集的领域特定语言(DSL)中。解释器模式通过定义语言的语法规则,并使用这些规则解析和执行语句。它适用于简单的语法规则和小型语言解析任务,但不适用于复杂的语法解析和大规模系统。解释器模式的灵活性和扩展性使其在某些领域特定语言的实现中非常有用。原创 2024-08-30 16:47:36 · 969 阅读 · 0 评论 -
设计模式 14 命令模式
命令模式的核心思想是将“请求”封装为对象,并将请求的执行和请求的具体操作细节解耦。这样可以在不同的时间点、不同的环境下执行请求,还可以通过命令对象的统一接口来记录日志、撤销操作等。命令模式通过将操作封装为独立的命令对象,实现了请求发送者与接收者的解耦。它为系统增加了灵活性,尤其是在支持撤销、恢复、宏命令和请求排队等功能时非常有用。然而,命令模式的使用也可能导致类的数量增加,系统的复杂性增加,因此在设计时需要权衡使用。原创 2024-08-30 16:46:41 · 926 阅读 · 0 评论 -
设计模式 13 责任链模式
责任链模式的核心思想是将请求沿着处理者链传递,直到其中一个处理者处理这个请求。这种模式的一个重要特性是:请求的发送者并不知道哪个对象会最终处理请求,系统中的处理者对象也无需知道其他处理者的结构,处理者之间的解耦提高了系统的灵活性。责任链模式通过将处理者对象串联成一条链,使请求能够沿着链传递,直到被某个处理者处理。这种模式的灵活性使其适用于多种场景,尤其是那些需要动态指定请求处理者或处理者职责可能发生变化的场合。原创 2024-08-29 10:58:25 · 1456 阅读 · 0 评论 -
设计模式 12 代理模式
代理模式通过创建一个代理对象来控制对另一个对象的访问。代理对象具有与原对象相同的接口,客户端可以通过代理对象访问实际的服务对象。代理对象可以在不影响客户端的情况下,对请求进行预处理或后处理。原创 2024-08-29 10:57:40 · 1420 阅读 · 0 评论 -
设计模式 11 享元模式
享元模式的核心思想是将对象的状态分为内部状态(可以共享的部分)和外部状态(不能共享的部分)。通过共享相同的内部状态,减少内存的重复占用,从而实现系统的资源优化。原创 2024-08-28 10:36:45 · 808 阅读 · 0 评论 -
设计模式 10 外观模式
外观模式通过为复杂的子系统提供一个简化的接口,使得客户端可以通过这个接口访问子系统的功能,而不需要直接与子系统的多个组件进行交互。外观模式可以隐藏子系统的复杂性,并且使得子系统与客户端的耦合度降低。原创 2024-08-28 10:35:59 · 693 阅读 · 0 评论 -
设计模式 9 装饰器模式
装饰器模式通过创建一个装饰器类,它实现了与被装饰对象相同的接口,从而可以在运行时动态地添加新功能。这种模式提供了一种灵活的替代方案来扩展对象的功能,避免了使用子类来扩展功能的需要。原创 2024-08-27 09:51:53 · 1023 阅读 · 0 评论 -
设计模式 8 组合模式
组合模式通过定义树形结构来组成对象,使得客户端对单个对象和对象集合的处理方式一致。这个模式让你可以使用相同的接口来操作单一对象和对象集合,简化了代码和操作逻辑。原创 2024-08-27 09:50:58 · 1154 阅读 · 0 评论 -
设计模式 7 桥接模式
桥接模式允许在运行时将抽象类与其实现类解耦。它通过引入一个接口来使得抽象类与具体的实现类分开,从而支持两者的独立变化。这样可以避免复杂的多层继承结构。原创 2024-08-26 10:19:28 · 598 阅读 · 0 评论 -
设计模式 6 适配器模式
适配器模式将一个类的接口转换成客户希望的另一个接口,适配器使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。原创 2024-08-23 10:29:18 · 1029 阅读 · 0 评论 -
设计模式 5 原型模式
原型模式允许一个对象通过复制自身来创建新的对象。这种模式提供了一种创建对象的快捷方式,尤其适用于创建代价较高的对象。原创 2024-08-23 10:28:13 · 912 阅读 · 0 评论 -
设计模式 4 建造者模式
建造者模式将一个复杂对象的构造过程分离出来,使得相同的构造过程可以创建不同的表示。它使用多个简单的对象一步一步构建复杂对象,通过不同的建造者实现不同的构建方式。原创 2024-08-22 17:07:09 · 1254 阅读 · 0 评论 -
设计模式 3 单例模式
单例模式确保一个类只有一个实例,并提供一个访问该实例的全局访问点。它可以防止类被多次实例化,并且在某些情况下可以节省内存、确保一致性或控制资源的访问。原创 2024-08-22 17:06:03 · 1287 阅读 · 0 评论 -
设计模式 2 抽象工厂模式
抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。它适用于需要创建多个产品族的情况。工厂方法模式适用于创建单一产品的场景。通过子类化具体创建者来扩展产品类型。工厂方法模式更关注的是"如何创建"一个对象。抽象工厂模式适用于创建多个相关产品的场景。通过增加新的具体工厂来扩展产品族。抽象工厂模式更关注的是"创建什么"(一系列相关的对象)。在实际应用中,工厂方法模式较适合较简单的对象创建场景,而抽象工厂模式则适合更复杂的、多产品族的对象创建需求。原创 2024-08-26 10:16:47 · 468 阅读 · 0 评论 -
设计模式 1 工厂方法模式
简单工厂模式,也称为静态工厂方法模式,并不属于GoF(Gang of Four)设计模式之一。它提供了一个创建对象的简单接口,通过传递不同的参数来决定创建哪种类的实例。工厂方法模式定义了一个用于创建对象的接口,但由子类决定实例化哪一个类。通过这种方式,工厂方法将对象的创建推迟到子类。原创 2024-08-21 18:45:29 · 875 阅读 · 0 评论 -
设计模式概述
设计模式(Design Patterns)是软件工程中的一种解决方案,它提供了一套经过验证的代码设计和架构方案,用于解决软件设计中反复出现的问题。设计模式不特定于某种编程语言,而是普遍适用于各种面向对象的编程语言。设计模式主要分为三大类:创建型模式、结构型模式和行为型模式。原创 2024-08-21 18:44:24 · 878 阅读 · 0 评论