- 博客(29)
- 收藏
- 关注
原创 模式组合应用-适配器模式
本文探讨了适配器模式与其他设计模式的组合应用。适配器模式作为结构型设计模式,通过创建中间层解决接口不兼容问题,实现类间协作。作者通过多媒体播放器、支付系统、数据读取系统等案例,展示了适配器模式与工厂模式、桥接模式、策略模式、装饰器模式、外观模式的组合应用。 关键点包括:1)适配器模式通过转化接口实现代码复用;2)工厂模式管理适配器创建;3)桥接模式分离抽象与实现;4)策略模式封装不同算法;5)装饰器模式动态添加功能;6)外观模式简化复杂子系统。这些组合提高了系统的灵活性、可扩展性和维护性,更好地遵循开闭原则
2025-08-09 13:58:18
704
原创 设计模式-访问者模式
本文通过构建文档处理系统,深入探讨了访问者模式的应用。传统实现中,文档元素类(文本、图片、表格等)需要各自实现渲染、导出等操作,导致添加新功能时需修改所有元素类,违反开闭原则。访问者模式通过分离数据结构与操作,将具体功能移至独立的访问者类(如RenderVisitor、ExportVisitor),元素类只需实现accept方法。这种双重分发机制使得新增操作只需添加访问者类,避免修改现有代码。文章详细对比了重构前后的差异,分析了访问者模式适用场景(稳定数据结构+频繁操作变更)和最佳实践,并展示了如何轻松添加
2025-07-29 10:19:05
950
原创 设计模式-模板方法模式
本文以饮品制作为例,介绍了模板方法模式的应用。传统实现方式存在代码重复、维护困难和扩展性差的问题。通过重构,创建抽象类Beverage定义制作流程的模板方法prepareBeverage(),将不变步骤(煮水、装杯)实现为具体方法,变化步骤(冲泡、添加配料)声明为抽象方法。具体饮品类(如AmericanCoffee、GreenTea)继承并实现抽象方法,还可通过钩子方法控制可选步骤。该模式将算法骨架与具体实现分离,提高了代码复用性、可维护性和扩展性,同时使逻辑更加清晰。最后强调合理使用钩子方法、避免过度抽象
2025-07-09 09:42:11
890
原创 设计模式-策略模式
这篇文章探讨了电商促销系统中使用策略模式的设计优化。作者通过传统条件判断实现方式的缺点分析(违反开闭原则、代码膨胀、测试困难等),引出策略模式的优势。文章详细展示了策略模式的重构过程:定义PromotionStrategy接口,实现三种具体策略类(固定折扣、百分比折扣、满减折扣),构建PromotionContext上下文类进行策略调度。重构后的系统消除了条件判断,提高了可扩展性和可维护性。最后总结了策略模式的核心思想(算法封装、组合优于继承、开闭原则)及适用场景(支付系统、数据验证等)。
2025-06-25 16:22:58
882
原创 设计模式-状态模式
本文探讨了电商订单系统中如何应用状态模式简化复杂状态管理的案例。通过分析传统实现中因条件语句过多导致的问题,作者详细展示了如何重构代码:首先定义OrderState接口统一状态行为,然后创建6个具体状态类(CreatedState、PaidState等)分别封装不同状态下的业务逻辑,并通过StateFactory管理状态实例。重构后的Order类将操作委托给当前状态对象,使状态转换更加清晰。测试结果验证了方案的有效性,最后总结了状态模式的适用场景(行为依赖状态、复杂转换规则)和注意事项(不适用于简单状态)。
2025-06-19 16:12:43
757
原创 设计模式-观察者模式
文档讲述了社区通知系统的设计优化过程。初始实现存在通知方式硬编码、无法按需定制等问题。通过引入观察者模式重构,将通知发布者(被观察者)与接收方式(观察者)解耦,支持动态添加通知渠道(如短信、邮件、APP推送),居民可自定义接收偏好。重构后系统满足开闭原则,提升扩展性,实现个性化通知,体现了一对多依赖和事件驱动的核心思想。
2025-06-10 09:21:53
1162
原创 设计模式-备忘录模式
在开发文本编辑器时,用户需求撤销功能以回退到之前的编辑状态。文章首先通过常规编码实现了一个简单的撤销功能,但指出了这种实现方式存在的问题,如状态存储与编辑器类紧密耦合、破坏封装性、难以扩展等。接着,文章引入了备忘录设计模式,通过将状态的保存和恢复逻辑从编辑器类中分离出来,增强了封装性,降低了耦合度,并提高了代码的可扩展性。备忘录模式通过原发器、备忘录和负责人三个核心角色,实现了在不暴露对象内部细节的情况下捕获和恢复对象状态的功能。文章最后总结了备忘录模式的核心思想、使用场景和注意事项,强调了其在实现撤销/重
2025-05-23 09:13:39
1208
原创 设计模式-中介者模式
本文介绍了在传统用户-角色-菜单权限系统中,由于服务间循环依赖导致的高耦合度和维护困难问题,并提出了通过中介者模式来解决这一问题的方案。中介者模式通过引入中间层来管理复杂交互,将原本的网状依赖结构简化为星型结构,降低了系统的复杂度。文章详细阐述了中介者模式的定义、角色职责、架构转型示意图以及代码实现,包括核心组件关系、关键组件说明和中介者实现。此外,还提供了实施路径与最佳实践,包括实施步骤、适用场景和注意事项,帮助开发者在实际项目中有效应用中介者模式,提升系统的可维护性和扩展性。
2025-05-14 18:29:22
839
原创 设计模式-命令模式
命令模式是一种行为设计模式,它将请求封装为对象,从而允许用户使用不同的请求、队列或日志来参数化其他对象。这种模式的核心在于解耦请求的发送者和执行者,使得系统更加灵活和可扩展。在命令模式中,命令(Command)接口定义了执行操作的方法,具体命令(ConcreteCommand)类实现了这些方法并持有接收者(Receiver)的引用,接收者负责执行实际的操作。触发者(Invoker)则负责调用命令对象来执行请求。通过这种方式,命令模式支持撤销操作、记录操作历史、实现事务操作以及任务调度等功能。在实际应用中,命
2025-05-09 11:12:38
681
原创 设计模式-迭代器模式
本文介绍了迭代器模式在书籍管理中的应用。传统实现中,遍历逻辑直接硬编码在集合类中,导致新增遍历方式时需要修改原有代码,违反了开闭原则。通过引入迭代器模式,将遍历逻辑与集合类解耦,定义了统一的遍历接口,支持多种遍历方式,且新增迭代器无需修改集合类。具体实现包括定义迭代器接口、具体迭代器、集合接口和具体集合类。迭代器模式的优势在于解耦遍历逻辑、支持多种遍历方式、简化集合接口和并行遍历。适用于需要以不同方式遍历集合对象、不想暴露集合内部结构或需要统一遍历接口的场景。
2025-05-09 11:06:57
589
原创 设计模式-享元模式
Flyweight(抽象享元接口)定义享元对象的公共接口,声明外部状态的操作方法。ConcreteFlyweight(具体享元实现)实现抽象享元接口,封装共享的内部状态。FlyweightFactory(享元工厂)负责创建和管理享元对象,确保相同内在状态的享元对象唯一。
2025-03-29 18:47:35
809
原创 设计模式-桥接模式
电商物流系统需要支持:消息类型:普通消息、紧急消息通知渠道:极光推送、短信通知扩展预期:未来可能新增微信通知、邮件通知等渠道紧急消息类客户端调用二、暴露的问题2.1 新增微信渠道时的问题遗留问题:新增消息类型需要修改新增渠道类型需要修改两种修改都会影响核心业务类产生的影响类爆炸风险:每新增渠道需修改所有消息类(N×M扩展)高耦合:消息业务逻辑与渠道实现深度耦合维护困难:客户端存在多重条件判断步骤2:实现具体消息类型步骤3:定义渠道抽象类步骤4
2025-03-09 10:54:48
479
原创 设计模式-工厂模式
工厂模式(Factory Pattern)是一种创建型设计模式,提供了一种创建对象的方式,而无需指定具体的类。工厂模式的核心思想是将对象的创建过程进行封装,使得客户端代码与具体类的实现解耦。❝工厂方法模式抽象工厂模式建造者模式原型模式单例模式。简单工厂模式通过一个工厂类来创建不同类型的对象,客户端只需要传递参数即可获取所需对象。工厂方法模式中定义了一个抽象工厂类,并且定义了创建产品对象的公共接口,返回抽象产品对象,抽象工厂子类实现了抽象接口,返回具体产品对象。
2025-02-16 18:36:45
467
原创 VisualSVN 【使用手册1】
每天进步一点点,才能有大树的参天VisualSVN服务器 1.介绍问题的产生解决问题2.VisualSVN服务器2.1 介绍2.2 功能1.介绍问题的产生问题 : 在企业的项目中由多人进行协同开发,每个人的代码都有相同地方,都有不同地方,如何整合?你可能会想到可以专门安排一个人去整合完成。上万行代码如果靠人力要整合到什么时候?整合中出现的大量问题如何解决?如果全部需要人力去完成,是否会产生大量的失误,严重拉低效率呢?解决问题
2020-05-31 14:50:23
1010
原创 Maven【使用手册2】
每天进步一点点,才能有大树的参天Maven的绑定及项目结构的创建一.Maven的绑定1.在idea中进行Maven的绑定1.1当前项目构建的绑定1.2在未来项目中绑定2.创建Maven结构2.1在File中创建Modole2.2创建完成后会发现并不是完整目录结构3.测试代码3.自定义创建项目结构4.服务器配置3.依赖的范围管理3.1 使用位置3.2 范围一.Maven的绑定使用图文操作更加直观绑定后在idea中直接进行使用方便项目结构的创建于jar包的管理1.在idea中进行Maven的绑定1.
2020-05-27 12:34:26
421
原创 Maven【使用手册1】
Maven使用手册1.发现问题2.如何解决3.Maven仓库3.1 简绍3.2 类型3.2.1 本地仓库3.2.2 远程仓库a 中央仓库b 第三方仓库c 私服仓库3.3 使用流程4. Maven安装与配置4.1Maven的安装4.2Maven仓库的配置4.3.1 绑定本地仓库及第三方仓库4.3JDK编译语言级别版本配置5.Maven环境变量的配置每天进步一点点,才能有大树的参天。1.发现问题手动操作jar包出现的问题:1.需要手动引用较为繁琐2.在引用过程中很难实现针对性引用3.没创建一个项目就
2020-05-27 10:45:55
445
原创 MySQL 基础学习 及其 语法 之 DDL
MySQL 基础 学习语句格式: 每行代码必须以 ; 结尾。SQL四大语句 之 DDL语句介绍: Data Definitional Language (DDL)数据定义语言作用:用于操作数据库 及 库内表的管理(增删查改)数据库的操作1.数据库的管理-- 1.1 语法1:create database 数据库名; -- 创建新数据库 若该数据库已经存在则报错 -- 创建数据库 使用原有名称 create database Test01; -- 1.2 语
2020-05-13 13:24:31
235
原创 File类笔记浅谈
File类构造方法File file = new File(“路径”);File file = new File(new File(“路径”) , String str);成员方法file.createNameFile //创建一个此file路径下的文件file.mkdir //创建一个此file路径下的文件夹file.mkdirs //创建一个此file路径的多...
2020-04-02 22:50:47
204
原创 lambda表达式笔记浅谈
Lambda表达式需要注意以下几点:1、使用lambda表达式简化匿名内部类首要前提就是此接口必须是函数式接口(有且只有一个抽象方法)。2、lambda格式(参数)一>{方法体};a、参数若只有一个变量,包裹参数的括号可以省略。b、方法体若只有一个,包裹方法体的{}和;可以省略,若有返回值也可省略,({} ; return 必须同时省略,或同时存在)c、参数有多个变量可以省略声明类型...
2020-03-31 20:41:23
196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人