![](https://img-blog.csdnimg.cn/98a8f329ed544eefaaf8cd844cce8a3a.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 73
主要讲解23种设计模式及代码举例
来自宇宙的曹先生
一个不怎么爱好编程的玩家
展开
-
基于策略模式实现不同的搜索分发
定义一个策略接口,它包含一个search。原创 2024-03-28 09:57:38 · 495 阅读 · 0 评论 -
适配器模式的应用
首先,定义一个目标接口,它包含一个方法,这是我们希望所有音乐库都能实现的接口。原创 2024-02-25 11:01:33 · 655 阅读 · 0 评论 -
建造者模式实现房屋建设
*** @author 曹见朋*/@Data/*** @author 曹见朋*//*** @author 曹见朋*/@OverrideSystem.out.println("建造小屋的地基...");house.setBasic("小屋地基");@OverrideSystem.out.println("建造小屋的墙体...");house.setWalk("小屋的墙体");@Override。原创 2024-02-25 10:13:52 · 660 阅读 · 0 评论 -
实现深拷贝的方式
创建一个新的构造函数,它接受一个对象作为参数,并复制其数据到新对象中。这种方法适用于对象图比较复杂的情况。所有参与深拷贝的对象必须实现。这种方法要求类及其所有需要深拷贝的成员变量都支持深拷贝。使用这个方法时,你的类(以及类的所有对象成员)必须实现。比如使用Apache Commons Lang的。接口)或者使用其他专门的库来实现深拷贝。原创 2024-02-24 10:19:29 · 289 阅读 · 0 评论 -
简单工厂模式模拟“披萨店”
/ 披萨接口void cut();void box();// 奶酪披萨System.out.println("准备奶酪披萨");System.out.println("烘焙奶酪披萨");System.out.println("切割奶酪披萨");System.out.println("装盒奶酪披萨");// 意大利辣味香肠披萨System.out.println("准备意大利辣味香肠披萨");System.out.println("烘焙意大利辣味香肠披萨");原创 2024-02-21 19:00:42 · 684 阅读 · 0 评论 -
详细介绍设计模式七大原则
单一职责原则:一个类应该只有一个引起它变化的原因。开闭原则:软件实体应对扩展开放,对修改封闭。里氏替换原则:子类型必须能够替换掉它们的基类型。依赖倒置原则:高层模块不应依赖于低层模块,两者都应依赖于抽象;抽象不应依赖于细节,细节应依赖于抽象。接口隔离原则:使用多个专门的接口比使用单一的总接口更好。合成/聚合复用原则:尽量使用对象的组合/聚合,而不是继承关系达到复用的目的。迪米特法则(最少知道原则):一个对象应对其他对象有尽可能少的了解。原创 2024-02-19 11:30:24 · 2323 阅读 · 0 评论 -
解释器设计模式
解释器设计模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言的文法,并建立一个解释器来解释该语言中的句子。这种模式通常用于需要解释或执行一种特定类型的语言的场景,例如编程语言的编译器或解释器、规则引擎系统等。假设我们需要一个简单的解释器,用于解释由数字和两种操作符(和)组成的简单算术表达式。Step 2: 实现终结符表达式Step 3: 实现非终结符表达式Step 4: 客户端使用在这个案例中,我们创建了一个简单的加减法解释器。类代表终结符表达式,而和类代表原创 2024-02-18 10:28:18 · 753 阅读 · 0 评论 -
设计模式的七大原则
设计模式的七大原则是一组指导性原理,旨在帮助开发者编写灵活、可维护、可扩展的代码。这些原则提倡了良好的软件设计习惯,有助于避免代码的脆弱性、紧密耦合等问题。原创 2024-02-18 10:06:53 · 512 阅读 · 0 评论 -
状态模式:灵活管理对象状态的设计策略
状态模式是一种行为设计模式,允许一个对象在其内部状态改变时改变它的行为。这个模式将每一个状态封装成独立的类,与对象的行为相关联。通过这种方式,状态的改变可以通过改变对象关联的状态类的实例来实现,而不是直接操作对象。首先,我们定义一个状态接口,该接口声明了与状态相关的操作。状态模式为对象的状态转换提供了一种清晰的管理策略,它帮助我们将状态的变化与对象的行为解耦,提高了代码的可维护性和可扩展性。通过上述文。原创 2024-02-12 09:29:23 · 1184 阅读 · 0 评论 -
桥接模式:连接抽象与实现的设计艺术
桥接模式通过把抽象化(Abstraction)与实现化(Implementation)解耦,使得二者可以独立变化。这个模式涉及到一个作为桥接的接口,它使得具体的类不需要关心抽象类的实现细节。使用桥接模式可以避免在抽象层建立类的层次结构,同时也可以减少子类的生成。桥接模式提供了一种强大的机制,允许抽象和实现可以独立变化而不是永久绑定,增加了代码的灵活性和扩展性。通过上述的设备和遥控器的例子,我们看到了如何将抽象(遥控器)与实现(设备)分离,并通过桥接它们。原创 2024-02-12 09:23:55 · 1257 阅读 · 0 评论 -
组合模式:简化复杂结构的设计艺术
组合模式提供了一种灵活的方式来组织对象成树形结构,以表示部分-整体的层次关系。它通过使客户端能够统一处理个别对象和组合对象来简化客户端的实现。无论是在图形界面的设计、文件系统的实现,还是组织结构的管理中,组合模式都能发挥重要作用。希望这篇博客能够帮助你理解组合模式,并在未来的项目中找到其应用场景。原创 2024-02-12 09:10:37 · 421 阅读 · 0 评论 -
探索设计模式:原型模式深入解析
原型模式是用于创建对象的设计模式,其思想是通过复制一个已存在的实例来创建新的实例,而不是通过新建类的方式。这种模式特别适用于创建复杂对象的情况,特别是当对象的创建过程比复制现有实例更加昂贵或复杂时。首先,我们定义一个原型接口,它包含了一个用于克隆对象的方法。原型模式提供了一种简便的方式来创建对象,特别是对于创建成本高昂或需要独立于其类和如何创建的对象的情况。通过实现一个克隆自身的方法,可以在不知道对象类型的情况下生成新的实例,这增加了代码的灵活性和可复用性。希。原创 2024-02-11 19:19:23 · 1126 阅读 · 0 评论 -
深入理解设计模式:建造者模式
建造者模式(Builder Pattern)旨在找到复杂对象的构建和表示之间的分离。这个设计模式允许创建复杂对象的步骤可以被分解,通过相同的构建过程可以构造不同表现(representation)的对象。建造者模式主要解决在软件开发过程中,如何以最灵活和安全的方式构建一个复杂对象的问题。首先,我们定义一个汽车类,它是最终要构建的复杂对象。最后,创建一个指挥者类来封装构建过程。建造者模式提供了一种高效灵活的方式来创建复杂对象,特别是当对象的创建涉及多个步骤时。原创 2024-02-11 19:17:10 · 1472 阅读 · 1 评论 -
23种设计模式概述
设计模式是软件工程中的一种最佳实践,用于解决在设计软件应用程序时常见的问题。它们可以分为三大类:创建型模式、结构型模式和行为型模式。这里列出了总共23种常见的设计模式,每一种都旨在解决特定的设计问题或场景。原创 2024-02-11 19:13:51 · 903 阅读 · 0 评论 -
设计模式之策略模式
策略模式非常适合于有多种算法可以完成同一任务的情况,并且允许在运行时根据不同的情况选择不同的算法。通过使用策略模式,可以提高代码的灵活性和可维护性。原创 2024-01-22 11:39:55 · 1198 阅读 · 0 评论 -
设计模式之享元模式
在这个过程中,如果请求的享元对象已经存在,工厂将返回现有的对象,否则创建一个新的对象。内部状态和外部状态: 在享元模式中,对象的状态分为内部状态和外部状态。内部状态是存储在享元对象内部并可以被共享的状态,而外部状态是存储在客户端并且不能被共享的状态。通常包括具有内部状态和外部状态的方法,内部状态是可以共享的,外部状态是不可共享的。非共享具体享元(Unshared Concrete Flyweight): 并非所有享元对象都需要被共享,有时候可以创建不可共享的具体享元对象。原创 2023-11-11 14:46:35 · 492 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式是一种创建型设计模式,用于创建对象的方式和过程,以便将对象的创建与其使用分离开来。这种模式提供了一种通用的接口,以创建对象,但具体的对象创建过程由实现工厂接口的具体子类决定。工厂模式通常包括以下几种变体:简单工厂模式:在这个模式中,有一个工厂类,负责根据客户的需求创建对象。客户不需要了解对象的具体创建过程,只需告诉工厂需要哪种类型的对象。工厂方法模式:工厂方法模式引入了抽象工厂类,其中包含一个或多个抽象方法,用于创建对象。具体的工厂子类实现这些抽象方法来创建具体的对象。原创 2023-10-22 19:21:29 · 201 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象可以同时监听并收到被观察对象的状态变化通知,以保持对象之间的数据同步。主题(Subject):也叫做被观察者,维护一组观察者对象,提供方法用于注册和删除观察者,以及通知观察者更新状态。观察者(Observer):定义一个更新方法,用于在主题状态改变时接收通知。观察者可以注册到一个或多个主题。原创 2023-10-21 22:09:33 · 370 阅读 · 0 评论 -
设计模式之代理模式
在第一次调用 display() 方法时,才会加载真正的图片对象 RealImage,在之后的调用中,直接使用已加载的图片而不会重新加载。这体现了虚拟代理延迟加载的特点。代理模式为其他对象提供一个代理,以控制对这个对象的访问。代理模式可通过代理对象控制对实际对象的访问,并在其基础上提供额外的功能。代理模式(Proxy Pattern)是一种结构型设计模式,允许代理对象充当另一个对象的接口,以控制对该对象的访问。以下是一个简单的 Java 代理模式的示例,演示了虚拟代理的应用场景,延迟加载图片的功能。原创 2023-10-30 23:10:54 · 636 阅读 · 0 评论 -
设计模式之责任链模式
不同级别的权限检查由不同的权限处理者来执行,如果某个处理者无法处理权限请求,则请求将被传递给下一个处理者。让我们想象一个问题解决系统,根据问题的复杂程度,系统中的不同专家级别的工程师会负责处理不同级别的问题。请求会从低级别处理者传递到更高级别处理者,直到找到能够处理该权限请求的处理者,或者请求到达责任链的末端。问题请求会从低级别处理者传递到更高级别处理者,直到找到能够解决该问题的工程师,或者请求到达责任链的末端。请求进入链的一端,并沿着链传递直至有一个处理者处理请求或者请求到达链的末端。原创 2023-11-04 11:16:53 · 463 阅读 · 0 评论