- 博客(88)
- 收藏
- 关注
原创 行为型设计模式之Interpreter(解释器)
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语音中的句子。
2025-06-07 22:18:46
160
原创 行为设计模式之Command (命令)
需要发出请求的对象(调用者)和接收并执行请求的对象(执行者)之间没有直接依赖关系时。比如遥控器 每个按钮绑定一个command对象,这个Command对象内部持有真正执行操作的Receiver(如文档编辑器、打印服务)的引用,并知道调用Receiver的哪个方法。改变按钮功能只需更换绑定的Command对象。
2025-06-07 21:06:49
654
原创 行为型设计模式之Chain of Responsibility(责任链)
摘要:责任链模式是一种行为型设计模式,允许请求沿着处理链传递,直到被某个对象处理。该模式由Handler抽象类定义处理接口,ConcreteHandler具体实现处理逻辑,每个处理者决定处理请求或传递给下个处理者。适用于多个对象可处理请求、请求接收者不明确或需动态指定处理集合的场景。示例代码展示了请假审批链,从小组长到部门经理逐级审批,体现了责任链的动态处理机制。
2025-06-06 09:42:21
690
原创 结构型设计模式之Proxy(代理)
本文介绍了结构型设计模式中的Proxy(代理)模式,其核心思想是为对象提供代理以控制访问。代理模式适用于远程代理、虚代理、保护代理和智能引用等场景。文中通过Java代码示例演示了代理模式的实现:Proxy类作为RealSubject的代理,控制对真实对象的访问,并在请求前后添加额外操作。该模式在AOP环绕通知、动态/静态代理等场景中都有应用。
2025-06-04 15:09:01
460
原创 结构性设计模式之Flyweight(享元)
享元模式是一种结构性设计模式,通过共享对象来减少内存使用和对象创建开销。该模式将对象属性分为内部状态(可共享)和外部状态(不可共享),适用于大量相似对象场景。典型案例包括图形游戏(粒子效果、地图瓦片)、文本处理(字符样式)和UI控件。模式结构包含享元接口、具体享元类、享元工厂和客户端。文中以Java代码示例展示了如何实现共享圆形对象的颜色属性,而坐标作为外部状态单独处理,有效减少了对象创建数量。
2025-06-04 14:50:48
758
原创 结构性设计模式之Facade(外观)设计模式
Facade(外观)模式是一种结构性设计模式,它通过提供一个统一的高层接口来简化复杂子系统的使用。该模式的意图是为子系统中的一组接口提供一致的界面,使其更容易被调用。主要特点包括:Facade类了解子系统的内部结构,将客户端请求代理给适当的子系统对象子系统类实现具体功能,但不知道Facade的存在适用于需要简化复杂系统接口、降低系统耦合度或构建层次化子系统的情况示例代码展示了如何通过Facade类统一调用多个子系统的功能方法(methodOne、methodTwo等)。这种模式特别适合需要隐藏
2025-06-04 10:11:41
448
原创 结构型设计模式之Decorator(装饰器)
摘要: 装饰器模式是一种结构型设计模式,允许动态地为对象添加功能而不改变其源代码。本文通过李四的才艺展示案例演示了该模式的应用。关键点包括:1)意图是动态添加职责,比继承更灵活;2)结构包含Component、ConcreteComponent、Decorator和ConcreteDecorator四个角色;3)适用于需要透明扩展对象功能、支持功能撤销或无法使用子类扩展的场景。代码示例展示了如何通过DecoratorA和DecoratorB在原有"画画"才艺基础上逐步添加"唱歌"和"跳舞"功能,体现了装饰器
2025-06-03 11:48:55
1121
原创 结构性设计模式之Composite(组合)
摘要:Composite(组合)模式通过树形结构表示"部分-整体"层次关系,使得用户能够统一处理单个对象和组合对象。该模式包含Component(组件接口)、Leaf(叶子节点)和Composite(组合节点)三个核心角色,适用于需要表示对象层次结构并统一操作的场景。示例代码展示了文件夹结构的实现,Folder类管理子组件,File类作为叶子节点,通过递归遍历实现统一处理。该模式简化了客户端代码,使系统更易扩展和维护。
2025-06-03 09:50:17
540
原创 结构性设计模式之Bridge(桥接)
桥接模式是一种结构性设计模式,其核心思想是将抽象部分与实现部分分离,使二者能够独立变化。本文通过汽车产品生产案例(产品A/B与颜色红/蓝/黄)展示了桥接模式的应用:将颜色作为独立接口实现,产品类通过组合方式调用颜色功能。关键结构包括抽象产品类(Product)、具体产品类(ProductA)和颜色接口(Color)及其实现类(Red/Blue/Yellow)。该模式适用于需要避免抽象与实现固定绑定的场景,支持通过子类扩展功能,且修改实现不影响客户端代码。代码示例演示了如何为不同产品动态配置颜色。
2025-05-29 22:02:49
806
原创 结构性设计模式之Adapter(适配器)
本文介绍了结构性设计模式中的适配器模式(Adapter Pattern)。适配器模式分为类适配器和对象适配器两种形式,其核心思想是将一个接口转换为客户期望的另一个接口,类似"狸猫换太子"的替换逻辑。文章通过电影主角和替身演员的类比,生动解释了该模式的工作原理。代码示例展示了如何通过Adapter类将Adaptee(替身演员)的接口适配到Target(主角)接口,使不兼容的接口能够协同工作。适配器模式适用于需要让现有类与新接口协同工作的场景。
2025-05-29 09:58:59
438
原创 创建型设计模式之Singleton(单例)设计模式
Singleton(单例)设计模式确保一个类仅有一个实例,并提供全局访问点。其结构包含一个静态方法getInstance()用于获取唯一实例,构造方法私有化防止外部实例化。适用于需要控制实例数量(如配置管理、线程池等)或需通过子类扩展但客户端无需修改代码的场景。示例代码展示了通过静态变量实现线程安全的单例模式,多次调用getInstance()返回同一实例,验证了唯一性。
2025-05-28 14:29:44
477
原创 创建型设计模式之Prototype(原型)
摘要:Prototype(原型)设计模式通过复制现有对象来创建新对象,避免重复初始化操作。该模式包含Prototype接口声明克隆方法、ConcretePrototype实现具体克隆逻辑,以及Client客户端调用克隆操作。示例代码展示了Product类实现Prototype接口,通过clone()方法复制对象属性。这种模式适用于创建成本较高的对象,能提高性能并简化对象创建过程。(149字)
2025-05-28 11:47:37
627
原创 创建型模式之 Builder (生成器)
本文介绍了生成器(Builder)设计模式,属于创建型模式之一。该模式通过将复杂对象的构建与表示分离,使同一构建过程能创建不同表现形式。文章以小米汽车不同配置版本为例说明了模式意图,并提供了Java代码实现示例,展示了如何通过Director管理Builder来构建不同的Product。核心包括抽象Builder类、具体Builder实现类以及最终产品类,实现了通过相同构建过程生成不同配置产品的目标。
2025-05-28 10:49:18
527
原创 创建型模式之Abstract Factory(抽象工厂)
本文介绍了抽象工厂模式(Abstract Factory),它是一种创建型设计模式,提供了一种创建一系列相关对象的接口而无需指定具体类。文章通过手机工厂示例进行说明,展示小米和华为两个工厂分别生产不同类型产品(屏幕、芯片、键盘等)的实现过程。代码演示了如何定义抽象工厂接口、具体工厂类和产品类,并展示了运行结果。该模式适用于需要创建产品族且不依赖具体产品类的情况,能够提高系统的灵活性和可扩展性。
2025-05-27 15:04:41
495
原创 创建型模式之Factory Method(工厂方法)
工厂方法模式是一种创建型设计模式,通过将对象实例化延迟到子类来实现解耦。该模式包含抽象工厂接口、具体工厂类、抽象产品和具体产品四个要素,相比简单工厂模式更具扩展性。文章展示了工厂方法模式的结构图,并提供了Java代码示例,演示如何通过不同工厂(FactoryA/FactoryB)创建对应产品(ProductA/ProductB)的过程,体现了多态特性。这种模式适用于需要灵活扩展产品类型的场景,遵循开闭原则,但会引入更多类。
2025-05-26 15:12:43
703
原创 Simple Factory(简单工厂)
摘要:简单工厂模式是一种创建型设计模式,通过定义工厂类根据参数返回不同产品实例,这些产品通常具有共同父类。示例展示了使用静态工厂方法创建ProductA和ProductB的Java实现,但该模式违反了开放封闭原则,因为新增产品类型需要修改工厂类代码。
2025-05-26 15:00:52
443
原创 项目报 OutOfMemoryError 、GC overhead limit exceeded 问题排查以及解决思路实战
项目报 OutOfMemoryError 、GC overhead limit exceeded 问题排查以及解决思路实战
2024-12-27 22:11:16
3917
原创 Caused by: com.alibaba.fastjson.JSONException: illegal input, offset 1, char 4
com.alibaba.fastjson.JSONException: illegal input, offset 1, char 1
2024-12-23 15:41:10
1918
原创 javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.13.13 not verified:
javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.13.13 not verified
2024-12-20 16:03:46
1450
原创 Springboot 接入 WebSocket 实战
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。简单理解:1,常见开发过程中我们知道 Http协议,客户端请求一次,服务器响应一次,推送数据,不能主动的推送数据,每次请求都要做一个连接,非常消耗性能。2,websocket 建立一次链接,可以主动向客户端推送数据。
2024-10-12 10:17:16
1599
1
原创 nginx报“/app/nginx/client_body_temp/0000000003“ failed (13: Permission denied)
nginx报"/app/nginx/client_body_temp/0000000003" failed (13: Permission denied)
2024-10-09 09:44:35
945
原创 scp user12.x2.1xx7.202:/home/yxyxzx/duxxp-xxud_xxjor_db-202407111647.sql . WARNING: REMOTE HOST IDEN
scp yzyuser@112.22.101.102:/xx/xx application.yml . 远程copy文件到本地
2024-07-16 14:18:44
497
原创 Nginx 重启失败nginx: [alert] kill(3259, 1) failed (3: No such process)
[alert] kill(3259, 1) failed (3: No such process)
2024-06-12 23:01:05
1343
原创 UNABLE_TO_GET_ISSUER_CERT_LOCALLY: request to https://registry.npmjs.org/abab failed, reason: unable
执行前端工程,在命令行 输入 npm install 报以下异常。
2024-06-06 22:47:05
1056
原创 Field remoteLogService in com.ruoyi.common.log.service.AsyncLogService required a bean of type ‘com.
使用若依框架的定时任务结果报以下问题:报 Field remoteLogService in com.ruoyi.common.log.service.AsyncLogService required a bean of type ‘com.ruoyi.system.api.RemoteLogService’ that could not be found.
2024-06-05 19:10:02
1083
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人