设计模式
文章平均质量分 92
设计模式
山鬼、
坐错车和错过车哪个更遗憾?
展开
-
设计模式-里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP)是面向对象编程中的一个重要设计原则,它是SOLID原则中的一部分,旨在确保子类(派生类)可以替代父类(基类)而不引入错误或破坏原有的程序设计和逻辑。这个原则的核心思想是,子类应该是父类的可替代品,它们应该具有相同的行为,或者说子类应该能够在不修改父类的情况下扩展或修改其行为。里氏替换原则是一个有助于设计稳健、可维护的面向对象系统的关键原则。它强调子类可以扩展或修改父类的行为,但不应该破坏父类的契约。原创 2023-09-15 06:53:49 · 1811 阅读 · 0 评论 -
设计模式-依赖倒置原则
依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象编程中的一项重要设计原则,它强调高层模块不应该依赖于低层模块,二者都应该依赖于抽象。此原则的核心思想是:编程时应该面向接口而不是具体的实现。依赖倒置原则是SOLID原则中的其中一项,由Robert C. Martin提出,旨在提高软件系统的可维护性、可扩展性和可重用性。这个原则的名称中包含了"倒置"一词,意味着高层模块和底层模块的依赖关系发生了颠倒。原创 2023-09-15 06:51:23 · 1824 阅读 · 0 评论 -
设计模式-单一职责
单一职责原则(Single Responsibility Principle,SRP)是面向对象编程中的一个重要设计原则,它强调一个类应该只有一个修改的理由。这意味着一个类应该只有一个单一的责任或功能。这个原则的核心思想是将一个类的功能限制在一个合理的范围内,以便提高代码的可维护性、可扩展性和可复用性。单一职责原则是面向对象设计中的重要原则之一,它有助于降低类的复杂性,提高代码的可维护性和可扩展性。遵循单一职责原则可以使代码更加清晰、可读,同时也更容易测试和重用。原创 2023-09-15 06:49:07 · 1805 阅读 · 0 评论 -
设计模式-解析器模式
解析器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义一种语言的文法,以及解释该语言中的表达式。这个模式允许你通过创建一个解释器来解释语言中的表达式,从而实现对特定语言的解析和操作。在本文中,我们将探讨解析器模式的概念、用途以及如何使用Java代码来实现它。解析器模式用于处理语言解析问题,其中包括解析和执行特定语言的语法规则。定义了解释器的接口,包括一个interpret方法,用于解释表达式。实现了抽象表达式接口,并提供了一个终结符表达式的解释方法。原创 2023-09-12 08:25:02 · 167 阅读 · 0 评论 -
设计模式-中介者模式
中介模式(Mediator Pattern)是一种行为型设计模式,它用于降低多个对象之间的直接通信,而是通过一个中介对象来协调它们的交互。中介模式有助于减少对象之间的耦合,使系统更加灵活和可维护。本文将介绍中介模式的概念、用途以及如何使用Java代码来实现它。中介模式的核心思想是引入一个中介者对象,该对象负责协调多个相关对象之间的交互。这些相关对象称为同事对象,它们不再直接相互通信,而是通过中介者对象来进行通信。定义了一个接口或抽象类,用于声明各个同事对象之间通信的方法。原创 2023-09-12 08:21:40 · 27 阅读 · 0 评论 -
设计模式-访问者模式
访问者模式(Visitor Pattern)是一种行为型设计模式,它用于在不改变被访问对象的类的前提下,定义对这些对象的新操作。访问者模式将数据结构与数据操作分离开来,使得新增操作变得简单,同时增加新的数据结构也不会影响已有的操作。本文将介绍访问者模式的概念、用途以及如何使用Java代码来实现它。访问者模式的核心思想是将数据结构与操作解耦。定义了对数据结构中各种元素的访问操作。每个具体的访问者类对应一个或多个具体元素的操作。实现了访问者接口,提供了对具体元素的操作方法。定义了一个accept。原创 2023-09-12 08:15:28 · 25 阅读 · 0 评论 -
设计模式-状态模式
状态模式(State Pattern)是一种行为型设计模式,它用于在对象内部状态发生变化时改变其行为。状态模式将对象的状态封装成不同的状态类,使得对象在不同状态下可以表现出不同的行为,同时将状态的转换逻辑从主对象中分离出来。本文将介绍状态模式的概念,以及如何使用Java代码来实现它。状态模式的核心思想是将对象的状态和状态相关的行为封装成独立的状态类。这些状态类共同实现一个共同的状态接口,这个接口中定义了不同状态下的方法。主对象在不同的状态下持有不同的状态对象,并委托给当前状态对象执行操作。原创 2023-09-12 08:12:20 · 31 阅读 · 0 评论 -
设计模式-备忘录模式
备忘录模式(Memento Pattern)是一种行为型设计模式,用于捕获对象的内部状态并在不破坏对象封装性的情况下将其保存,以后可以将对象恢复到原始状态。本文将介绍备忘录模式的概念,以及如何使用Java代码来实现它。备忘录模式的核心思想是将对象的状态保存到备忘录对象中,然后在需要时将对象恢复到先前的状态。这有助于实现撤销操作、历史记录、快照和状态恢复等功能,同时保持了对象的封装性。负责创建备忘录对象,并在需要时将自身状态保存到备忘录中。存储发起者的内部状态,通常包含一个或多个状态属性的快照。原创 2023-09-12 08:09:11 · 249 阅读 · 0 评论 -
设计模式-命令模式
命令模式(Command Pattern)是一种行为型设计模式,用于将请求发送者和请求接收者解耦,使得可以在不同的上下文中灵活地传递请求,记录请求日志,撤销请求等操作。本文将介绍命令模式的概念,以及如何使用Java代码来实现它。在软件设计中,命令模式是一个非常有用的模式,它将请求封装为一个对象,从而允许我们参数化不同的对象、将请求排队或记录请求日志,并支持撤销操作。定义了命令的接口,通常包括一个执行命令的方法。实现了命令接口,负责具体的命令逻辑。它包含了一个接收者对象,该对象实际执行命令。原创 2023-09-12 08:05:36 · 171 阅读 · 0 评论 -
设计模式-职责链模式
当我们需要在一个对象链上依次处理请求时,职责链模式(Chain of Responsibility Pattern)是一个非常有用的设计模式。它允许你将请求沿着一个对象链传递,并由链中的每个对象依次处理请求,直到找到可以处理它的对象为止。本文将介绍职责链模式的概念,以及如何使用Java代码来实现它。职责链模式是一种行为型设计模式,用于解耦发送者和接收者之间的关系。它将处理请求的对象组成一个链,每个对象都有一个处理请求的方法,但不一定处理请求,可以将请求传递给链中的下一个对象。原创 2023-09-12 07:59:20 · 87 阅读 · 0 评论 -
设计模式-迭代子模式
当我们需要遍历一个集合或聚合对象的元素时,通常会使用循环结构(例如for循环或while循环)。但是,这种方式不够抽象和灵活,因为它们依赖于具体的集合类型和数据结构。为了更好地解耦遍历算法和数据结构,我们可以使用迭代子模式(Iterator Pattern)。迭代子模式是一种行为型设计模式,它提供了一种顺序访问一个聚合对象中各个元素的方法,而又不暴露其内部表示。迭代子模式将迭代操作封装在一个独立的对象中,这个对象可以随时被替换,而不会影响客户端代码。它使得遍历过程对客户端透明,同时提供了一种通用的遍历方式。原创 2023-09-12 07:53:29 · 113 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,用于定义对象之间的一对多依赖关系,使得当一个对象的状态发生变化时,其所有依赖对象都会得到通知并自动更新。这种模式有时也被称为发布-订阅模式(Publish-Subscribe Pattern)。观察者模式是实现松耦合(Loose Coupling)的重要方式,允许主题(被观察者)和观察者之间的解耦。Subject(主题):主题是被观察的对象,它维护一组观察者,并提供方法来注册、删除和通知观察者。原创 2023-09-12 07:47:26 · 85 阅读 · 0 评论 -
设计模式-模板方法
当我们需要在一个算法的框架中定义算法的骨架,并将一些步骤的具体实现留给子类来完成时,模板方法模式是一种非常有用的设计模式。这篇博客将介绍模板方法模式的概念,并提供一个简单的Java代码示例来说明如何使用模板方法模式。模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将算法中的一些步骤的具体实现延迟到子类中。这种模式有助于在不改变算法整体结构的情况下,允许子类定制算法的特定步骤。抽象类(Abstract Class):定义算法的骨架,包括一个模板方法和一些抽象方法,这些抽象方法由子类来实现。原创 2023-09-12 07:33:42 · 64 阅读 · 0 评论 -
设计模式-策略模式
当我们需要在不同情境下使用不同的算法或行为时,策略模式是一个非常有用的设计模式。这种模式允许我们将不同的算法封装成独立的策略类,然后根据需要在运行时选择合适的策略。这篇博客将介绍策略模式的概念,并提供一个简单的Java代码示例来说明如何使用策略模式。策略模式是一种行为型设计模式,它允许我们定义一系列算法,将每个算法封装成一个独立的策略类,然后在运行时选择使用哪个策略。这种模式有助于将算法的实现与客户端代码分离,使代码更加灵活、可维护和可扩展。原创 2023-09-11 10:50:24 · 293 阅读 · 0 评论 -
设计模式-组合模式
当我们面对需要处理树状结构的问题时,组合模式(Composite Pattern)是一个非常有用的设计模式。它属于结构型设计模式的一种,主要用于创建一种树状结构,其中对象可以作为叶子节点或容器节点。组合模式使得客户端能够以一致的方式处理单个对象和对象组合,同时可以递归地处理整个结构。原创 2023-09-11 10:42:53 · 193 阅读 · 0 评论 -
设计模式-桥接模式
当我们谈到设计模式时,桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其实现部分分离开来,以便它们可以独立变化。这种模式的核心思想是将抽象与实现解耦,从而使系统更加灵活、可扩展,同时也提高了代码的可维护性。原创 2023-09-11 10:38:38 · 166 阅读 · 0 评论 -
设计模式-外观模式
当我们谈到编写博客时,外观模式是一个有趣而又有用的设计模式,它属于结构型设计模式的一种。外观模式的主要目标是简化复杂系统的接口,提供一个更简单的接口来访问系统的子系统。这种模式背后的思想是将系统的复杂性隐藏在一个单一的接口之后,这个接口对客户端来说更加友好,更容易使用。假设我们有一个复杂的音频处理系统,其中包括音频解码、音频增强和音频播放等子系统。客户端需要使用这些子系统来处理音频文件,但不想直接与每个子系统的复杂性打交道。这时,外观模式可以派上用场。原创 2023-09-11 10:34:16 · 133 阅读 · 0 评论 -
设计模式-代理模式
代理模式(Proxy Pattern)是一种常见的设计模式,它允许一个对象(代理对象)充当另一个对象(真实对象)的接口,以控制对这个对象的访问。远程代理:用于控制访问远程对象,例如网络服务或远程数据库。虚拟代理:用于延迟加载对象,以减少启动时间或减轻负载。安全代理:用于控制对敏感对象的访问权限。智能代理:用于执行额外的操作,例如对象计数或缓存。在本博客中,我们将讨论代理模式的基本概念,并使用Java代码示例来演示如何实现它。原创 2023-09-11 10:29:05 · 183 阅读 · 0 评论 -
设计模式-装饰模式
当需要动态地给对象添加额外的功能,而又不想改变其类结构时,装饰模式(Decorator Pattern)是一个非常有用的设计模式。它属于结构型设计模式,通过组合来增加对象的功能,而不是通过继承来创建子类。Component(组件):定义一个对象接口,可以动态地给这些对象添加功能。在装饰模式中,通常是一个抽象类或接口。ConcreteComponent(具体组件):实现了Component接口的具体类,是需要被装饰的对象。Decorator(装饰者)原创 2023-09-11 10:23:13 · 138 阅读 · 0 评论 -
设计模式-适配器模式
当我们需要使用一个已存在的类,但其接口不符合我们的需求时,适配器模式(Adapter Pattern)可以派上用场。适配器模式是一种结构型设计模式,它允许我们创建一个中间层,将一个类的接口转换为另一个类的接口,从而使它们可以协同工作。将一个旧的类与新的系统一起使用,而无需修改旧类的代码。将多个类的接口统一,以便它们可以交互。封装一个复杂的类,提供一个简单的接口供其他类使用。让我们通过一个简单的示例来说明适配器模式的用法。假设我们有一个已存在的类,用于连接欧洲的插座。原创 2023-09-11 10:17:14 · 200 阅读 · 0 评论 -
设计模式-原型模式
在软件开发中,设计模式是一种重要的思想和方法,用于解决常见的编程问题。原型模式是其中之一,它允许我们通过复制现有对象来创建新对象,而无需依赖具体类的构造函数。这篇博客将深入探讨原型模式的概念和在Java中的实现方式。原型模式是一种创建型设计模式,其主要目标是通过复制现有对象来创建新对象,而不是通过构造函数直接创建。这种方式的好处在于可以避免大量的初始化工作,尤其是当对象的创建过程非常复杂或者需要消耗大量资源时。原型模式的核心思想是定义一个原型对象,然后通过复制该原型对象来创建新的对象。原创 2023-09-11 10:12:00 · 205 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,旨在解决创建复杂对象的问题。它将一个对象的构建过程封装在一个独立的建造者类中,客户端代码使用建造者来一步一步构建对象。这使得客户端代码不需要了解对象的内部构建细节,同时允许在创建过程中灵活地添加、修改或替换组件。表示待构建的复杂对象,包含多个组件。声明了构建产品的抽象方法,通常包括设置各个组件的方法。实现了抽象建造者接口,负责构建具体产品的各个组件,同时提供方法链以支持流畅的构建。原创 2023-09-11 10:07:06 · 307 阅读 · 0 评论 -
设计模式-抽象工厂模式
当我们需要创建一组相关或相互依赖的对象时,抽象工厂模式是一种非常有用的设计模式。它提供了一种方式来封装对象的创建,同时保持对象之间的一致性和互操作性。在本文中,我们将深入探讨抽象工厂模式的概念,并使用Java代码示例来说明其用法。抽象工厂模式是一种创建型设计模式,旨在提供一个接口,用于创建一组相关或相互依赖的对象,而无需指定它们的具体类。这个接口通常称为抽象工厂,而具体的工厂类则实现了该接口以创建特定类型的对象。原创 2023-09-11 10:03:00 · 194 阅读 · 0 评论 -
设计模式-工厂方法模式
当我们面临需要创建不同类型对象的需求时,通常会使用工厂方法模式。工厂方法模式是一种创建型设计模式,它提供了一种将对象的创建与使用分离的方法,允许我们在不修改现有代码的情况下扩展系统以支持新类型的对象。在本文中,我们将深入探讨工厂方法模式的原理,并使用Java代码示例来说明它的实现。工厂方法模式是一种"创建者"模式,它在设计中引入了一个抽象工厂接口,由具体工厂类来实现该接口以创建具体产品。这种模式的核心思想是将对象的创建委托给子类,以便在运行时决定要创建的对象类型。原创 2023-09-11 10:00:02 · 222 阅读 · 0 评论 -
设计模式-状态模式(State)
当我们需要在对象的生命周期中管理不同状态时,状态模式(State Pattern)是一种有用的设计模式。在这篇博客中,我们将介绍状态模式的概念,讨论其用途和优点,并提供一个使用Java代码的示例来演示如何实现状态模式。在软件开发中,我们经常会遇到需要在对象的生命周期中管理不同状态的情况。状态模式是一种行为设计模式,它允许对象在不同的状态下执行不同的操作,从而更好地组织和管理状态相关的代码。本文将深入探讨状态模式,包括其核心概念、用途和实际示例。原创 2023-09-11 09:42:35 · 224 阅读 · 0 评论 -
设计模式-单例模式(Singleton)
单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供一种全局访问点来访问该实例。单例模式的实现方式有多种,懒汉式、饿汉式、双重检查锁定等,选择适合你需求的方式非常重要。单例模式在多线程环境中需要特别注意线程安全性,确保实例的创建和访问是线程安全的。在设计中,应根据具体的需求和场景来考虑是否使用单例模式。原创 2023-09-10 13:44:40 · 420 阅读 · 0 评论 -
设计模式-备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern)是一种行为型设计模式,它用于捕获和存储对象的内部状态,以便在以后可以恢复到先前的状态。备忘录模式允许对象在不暴露其内部状态的情况下保存和还原状态,从而提供了一种简单的方式来实现撤销和恢复功能。在本篇博客中,我们将详细介绍备忘录模式的概念,并提供一个简单的Java代码示例来演示如何实现它。备忘录模式是一种非常有用的设计模式,它允许对象保存和还原状态,从而提供了撤销和恢复功能。这在许多应用程序中都是非常有用的,例如文本编辑器、游戏中的进度保存等。原创 2023-09-10 13:41:57 · 809 阅读 · 0 评论 -
设计模式-享元模式(Flyweight)
享元模式(Flyweight Pattern)是一种结构型设计模式,它的主要目标是减少应用程序中对象的数量,以节省内存和提高性能。这一模式适用于对象数量庞大且相似的情况,通过共享内部状态来减少对象的创建。在本篇博客中,我们将详细介绍享元模式的概念,并提供一个简单的Java代码示例来演示如何实现它。享元模式是一种有助于减少内存占用和提高性能的设计模式,特别适用于需要大量相似对象的情况。通过将内部状态进行共享,可以有效地减少对象的创建数量,提高了系统的效率。原创 2023-09-10 13:24:07 · 459 阅读 · 0 评论 -
设计模式-桥接模式(Bridge)
桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分和实现部分分离,使它们可以独立地变化。这种分离允许你将一个类的功能层次结构(抽象)与另一个类的实现层次结构(实现)分开,从而在不同层次上进行修改和扩展。在本篇博客中,我们将详细介绍桥接模式的概念,然后提供一个Java代码示例来演示如何实现它。原创 2023-09-10 13:29:34 · 729 阅读 · 0 评论 -
设计模式-组合模式(Composite)
组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树状结构以表示“整体-部分”的层次结构。组合模式使得客户端可以统一处理单个对象和对象组合,而不需要区分它们。在本篇博客中,我们将详细介绍组合模式的概念,并提供一个简单的Java代码示例来演示如何实现它。组合模式是一种非常有用的设计模式,特别适用于构建树状结构的对象组合。它允许你统一处理单个对象和对象组合,使得代码更加灵活和可维护。组合模式常常用于处理复杂的层次结构,如文件系统、组织结构等。原创 2023-09-10 13:38:14 · 339 阅读 · 0 评论 -
设计模式-解释器设计模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于解释一种语言或表达式的语法。该模式主要用于自定义语言解释、查询解析和规则引擎等领域。在解释器模式中,我们定义了一个解释器类,用于解释和执行特定语法规则的表达式。在本篇博客中,我们将详细介绍解释器模式的概念,并提供一个简单的Java代码示例来演示如何实现它。定义一个抽象的解释器接口,包含解释方法,所有具体表达式都必须实现这个接口。接下来,我们定义上下文Context。原创 2023-09-10 13:19:37 · 325 阅读 · 0 评论