![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 80
K____End
宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。
展开
-
设计模式:策略模式
策略模式(Strategy Pattern)是行为设计模式的一种,它定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法的变化独立于使用算法的客户。策略模式让程序可以在运行时选择算法,灵活地改变程序的行为。原创 2024-05-17 10:55:17 · 568 阅读 · 0 评论 -
设计模式:状态模式
状态模式(State Pattern)是一种行为设计模式,属于设计模式中的行为模式类别。该模式主要用于解决对象状态转移及其行为变化的问题,使得对象能够在内部状态改变时,其行为也随之改变,从而让对象看起来像是改变了类型一样。原创 2024-05-16 15:48:41 · 351 阅读 · 0 评论 -
设计模式:解释器模式
解释器模式(Interpreter Pattern)是一种行为设计模式,它定义了一种方式来解释一个语言中的句子。这里的“语言”可以是任何形式的文法规则或表达式,比如数学公式、编程语言的语法、正则表达式等。解释器模式的关键在于将这些规则或表达式分解成多个小的组成部分(表达式),并为每个部分定义一个解释器。这些解释器类合作来解释整个句子的意义。原创 2024-05-15 14:55:00 · 643 阅读 · 0 评论 -
设计模式:备忘录模式
备忘录模式(Memento Pattern)是一种行为设计模式,它的主要目的是在不破坏对象的封装性的前提下,捕获并存储一个对象的内部状态,以便在将来需要时恢复该对象到之前的状态。这种模式非常适合需要实现撤销操作或状态恢复的场景,比如文本编辑器的撤销功能、游戏中的存档与读档功能等。原创 2024-05-14 11:33:46 · 556 阅读 · 0 评论 -
设计模式:中介者模式
中介者模式(Mediator Pattern)是一种行为设计模式,它用于减少多个对象和类之间的直接交互复杂性,通过引入一个中介机构(即中介者)来管理这些交互。中介者模式定义了一个中心组件,该组件负责协调各对象之间的通信,使得对象之间不必显式地相互引用,从而降低了系统的耦合性并提高了可维护性和灵活性。原创 2024-05-13 20:42:46 · 1465 阅读 · 0 评论 -
设计模式:观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式通常被用来实现事件处理系统、实时数据更新、状态监控等多种场景。原创 2024-05-11 17:49:57 · 573 阅读 · 0 评论 -
设计模式:迭代器模式
迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种方法来顺序访问集合对象中的元素,而不需要了解集合的底层表示。迭代器模式将集合的遍历操作(即对元素的访问和遍历逻辑)从集合对象本身分离出来,封装到了迭代器对象中。这样做的好处是,集合对象的内部结构可以自由地改变,而遍历集合的代码不需要随之调整,增强了代码的灵活性和模块化。原创 2024-05-10 17:54:54 · 694 阅读 · 0 评论 -
设计模式:访问者模式
访问者模式(Visitor Pattern)是行为设计模式的一种,它使你能够在不修改对象结构的情况下,给对象结构中的每个元素添加新的功能。访问者模式将数据结构和作用于结构上的操作解耦,使得操作集合可相对自由地演化。原创 2024-05-09 17:59:23 · 650 阅读 · 0 评论 -
设计模式:命令模式
命令模式(Command Pattern)是一种行为设计模式,它将请求封装成对象,以便参数化对象、延迟执行、记录请求日志、支持可撤销操作等。此模式基于“行动请求者”与“行动执行者”之间解耦的设计思想,使得请求的发送者和接收者之间没有直接的联系,通过命令对象作为中介,这样两者可以独立变化,提高系统的灵活性和可扩展性。原创 2024-05-08 11:44:56 · 915 阅读 · 0 评论 -
模板方法模式
模板方法模式(Template Method Pattern)是行为设计模式的一种,它定义了一个操作中的算法骨架,而将某些步骤延迟到子类中实现。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,从而使得代码复用和扩展性得到提升。原创 2024-05-07 14:24:13 · 588 阅读 · 0 评论 -
设计模式:代理模式
代理模式(Proxy Pattern)是软件设计模式中的一种结构型模式,它提供了一种代理或占位符来控制对其他对象(称为真实主题或目标对象)的访问原创 2024-05-06 14:36:08 · 693 阅读 · 0 评论 -
设计模式:享元模式
内部状态是存储在享元对象内部并且可以共享的状态,这部分状态对于所有享元对象是相同的,不会随着环境改变而改变。在这个例子中,我们将模拟一个字符渲染系统,其中字符可以有不同的颜色,但大多数字符都是重复的,例如,一个文档中可能多次出现字母'a',且这些字母可能有多种颜色。客户端通过工厂获取享元对象,并传递外部状态(颜色)来渲染字符,实现了内部状态的共享和外部状态的分离。当客户端请求享元对象时,享元工厂会提供已存在的享元对象或创建新的享元对象(如果不存在符合条件的共享对象)。接口定义了享元对象的行为,原创 2024-04-28 16:02:45 · 404 阅读 · 0 评论 -
设计模式:外观模式
外观模式通过定义一个新的接口(即外观类),封装原有系统中的一组接口,使得外部用户只需与这个外观接口交互,无需了解内部组件的细节。总之,外观模式通过引入一个外观类,为复杂的子系统提供了一个更易于使用的接口,简化了客户端与子系统的交互,降低了系统的耦合度,提高了系统的可维护性和可扩展性。外观模式提供了一个简化的接口,它将一组复杂的子系统接口或类的功能封装在一起,使客户端只需要与这个单一、简洁的接口打交道,而无需直接访问各个子系统。这有利于系统的维护和演化。交互,无需了解子系统的具体实现细节,简化了系统的使用。原创 2024-04-26 15:14:01 · 321 阅读 · 0 评论 -
设计模式:组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它的主要目的是将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。在组合模式中,组合对象和叶子对象都有相同的接口,用户可以以相同的方式处理它们,无需了解对象是单个实体还是由多个对象组成的集合。这里我们创建一个图形库应用程序,其中图形既可以是简单图形(叶子对象),如矩形和圆形,也可以是复杂图形(组合对象),如组合图形,它包含多个图形。:是组合对象中的最底层对象,没有子节点。原创 2024-04-25 14:25:22 · 229 阅读 · 0 评论 -
工厂设计模式
提供一个接口,用于创建相关或依赖对象家族的一系列相关或相互依赖的对象,而不指定具体的产品类。适合于一个产品族内的多个产品对象都需要一起创建的情况。以下是抽象工厂模式的一个简单示例,我们继续沿用披萨店的例子,这次不仅要生产不同口味的披萨,还要区分纽约风格和芝加哥风格的披萨原料:原创 2024-04-09 13:15:35 · 1742 阅读 · 0 评论 -
桥接模式介绍
桥接模式的核心思想是将抽象层和实现层解耦,使得抽象层可以独立地进行扩展而无需修改其实现层的代码,反之亦然。通过桥接模式,可以构建出更灵活、更容易扩展的系统,其中抽象部分与实现部分之间松散耦合,各自独立演化,从而增强了系统的灵活性和可维护性。:定义抽象类的基本操作,存储一个实现化对象,通过调用实现化对象的方法来完成具体的操作。:继承自抽象接口,可以覆盖并扩展抽象接口中的一些方法,同时调用实现化对象的相关方法。:实现实现化接口,提供具体的实现化角色功能,这些功能会被抽象接口调用。原创 2024-04-22 11:47:14 · 228 阅读 · 0 评论 -
装饰者模式
装饰者模式的核心在于“装饰”这一概念,它通过创建一个装饰对象来包裹(或“装饰”)原始对象,并通过在装饰对象中扩展或替换原有对象的部分行为,实现对原始对象功能的增强或修改,同时保持原始对象的接口不变。以下是一个使用Java实现装饰者模式的简单示例。我们将创建一个饮料(Beverage)类作为抽象构件,具体饮料(如Espresso、HouseBlend)作为具体构件,以及一个装饰者(CondimentDecorator)类和几个具体的装饰者(如Milk、WhippedCream、Chocolate)。原创 2024-04-24 00:13:19 · 663 阅读 · 0 评论 -
建造者模式
下面是一个简单的Java实现建造者模式的例子,我们将会创建一个披萨(Pizza)的产品类,并定义一个抽象建造者(Builder)来构建披萨的不同部分,然后创建一个具体的建造者实现来制作不同口味的披萨,最后通过导演(Director)类来指导建造过程。它不用知道具体建造者的内部细节,只知道如何通过调用建造者的接口方法来一步步指导产品的创建过程。: 提供了一个抽象接口,规定了创建产品对象的各个步骤,具体包括定义了一系列的方法,用于创建产品的各个部分。则是导演类,它通过调用建造者的方法来完成披萨的创建。原创 2024-04-12 14:47:44 · 540 阅读 · 0 评论 -
原型设计模式
当原始对象的属性发生变化时,克隆对象的属性保持不变,表明它们是独立的实体。需要注意的是,对于包含引用类型的成员变量,必须确保它们也被正确地克隆,以实现真正的深克隆。在Java中实现原型模式,首先需要一个实现了Cloneable接口的实体类,然后重写Object类的clone()方法。如果涉及到复杂的数据结构或包含非基本类型的成员变量,则需要特别注意深克隆的实现,以免出现引用复制而非值复制的问题。: 使用原型接口来请求克隆对象,而不需要关心具体的实现细节。方法,它是所有具体原型类都需要实现的接口。原创 2024-04-12 14:30:40 · 740 阅读 · 0 评论 -
单例设计模式
单例设计模式(Singleton Design Pattern)是一种常用的软件设计模式,它确保一个类在整个应用程序的生命周期中只会产生一个实例,并提供一个全局访问点来获取这个唯一的实例。单例模式的目标是控制类的实例化过程,使得无论何时何地访问这个类的实例时,得到的都是同一个对象。这是《Effective Java》作者Joshua Bloch推荐的单例实现方式,不仅能防止反射攻击,还提供了天然的序列化机制,同时也是线程安全的。这种方式写法比较简单,就是在类装载的时候就完成实例化,避免了线程同步问题。原创 2024-04-08 11:57:09 · 416 阅读 · 0 评论