- 博客(15)
- 收藏
- 关注
原创 设计模式之命令模式
本文介绍了命令模式的理论与实现。命令模式将请求封装为对象,实现解耦调用者与接收者,支持撤销、重做和宏命令等功能。文章详细讲解了命令模式的4个角色(抽象命令类、具体命令类、调用者、接收者)及其UML类图,并探讨了撤销重做、宏命令、命令队列等扩展功能。通过Java代码示例演示了基本实现和隐藏接收者、支持撤销等特性。命令模式的优点在于降低耦合、易于扩展,但可能增加代码量,适用于需要解耦调用与执行、支持撤销重做等场景。完整代码已开源在GitHub仓库。
2025-08-01 10:18:25
1923
原创 设计模式之职责链模式
本文介绍了职责链模式的理论与实现。职责链模式将请求发送者与接收者解耦,通过构建处理对象链来传递请求,直到有对象处理为止。文章分析了该模式的结构(抽象处理者和具体处理者)、优缺点(降低耦合但可能处理失败)及适用场景(多个对象可处理同一请求时)。通过Java代码展示了采购审批流程的实现案例,包含PurchaseRequest请求类、Approver抽象处理者,以及Director、VicePresident等具体处理者的层级审批逻辑。完整代码已托管至GitHub仓库。
2025-08-01 10:05:04
1146
原创 设计模式之代理模式
本文介绍了代理模式的理论与实现。代理模式通过引入代理对象控制对原对象的访问,包含抽象主题、代理主题和真实主题三个角色。文章分析了静态代理和动态代理两种实现方式:静态代理通过手动创建代理类,而动态代理利用语言特性(如Java的Proxy类)在运行时动态生成代理。代理模式的优点包括降低耦合、提高灵活性,适用于远程代理、虚拟代理等场景。实现部分展示了Java代码示例,包括静态代理的Searcher接口、RealSearcher实现类和ProxySearcher代理类,以及基于JDK的动态代理实现。完整代码已开源在
2025-07-31 09:52:51
747
原创 设计模式之享元模式
本文介绍了享元设计模式及其实现。享元模式通过共享技术高效支持大量细粒度对象的复用,区分内部状态(可共享)和外部状态(不可共享)。文章详细说明了享元模式的4个角色(抽象享元类、具体享元类、非共享具体享元类和享元工厂类),并比较了单纯享元模式和复合享元模式的区别。通过围棋棋子管理的Java代码示例,展示了如何将棋子颜色作为内部状态共享,位置作为外部状态管理。享元模式能减少内存消耗,适用于存在大量相似对象的场景,但会增加系统复杂度。文末提供了相关学习资料和完整代码仓库链接。
2025-07-31 01:51:08
949
原创 设计模式之外观模式
本文介绍了外观模式(Facade Pattern)的设计原理与实现方法。外观模式通过提供统一接口简化了复杂子系统的调用,包含Facade和SubSystem两个核心角色。文章分析了标准外观模式和引入抽象外观类的改进方案,通过Java代码示例演示了文件加密系统的实现,对比了两种方案的优缺点。该模式适用于需要简化子系统访问、降低耦合度的场景,但需注意可能违反开闭原则的问题。最后提供了相关学习视频和读物的参考资料。完整代码已开源在GitHub仓库。
2025-07-30 17:01:37
1064
原创 设计模式之装饰模式
本文介绍了装饰模式的理论与实现。装饰模式能动态地为对象添加职责,比继承更灵活。文章首先阐述了装饰模式的结构,包含抽象构件、具体构件、抽象装饰类和具体装饰类4个角色,并给出了UML类图。然后介绍了透明和半透明两种装饰模式的区别,以及省略抽象装饰类的简化方式。最后通过Java代码示例演示了透明和半透明装饰模式的实现,分别以GUI组件添加滚动条和图形添加阴影效果为例。装饰模式适用于需要动态扩展对象功能且避免继承导致类爆炸的场景,但会增加系统复杂度。完整代码已上传至GitHub仓库。
2025-07-30 06:20:53
935
原创 设计模式之组合模式
摘要:本文介绍了组合模式(Composite Pattern)的理论与实现。组合模式通过树形结构表示部分-整体关系,使客户端统一处理单个对象和组合对象。文章分析了组合模式的三种角色(抽象构件、叶子构件、容器构件)和两种实现方式(透明组合模式和安全组合模式),比较了各自的优缺点。最后以Java代码演示了透明组合模式的实现,通过文件系统案例展示了如何构建层级结构并进行统一操作。完整代码已上传至GitHub仓库LearningCode。
2025-07-30 02:09:47
726
原创 设计模式之桥接模式
本文介绍了桥接设计模式的理论与实现。桥接模式通过将抽象部分与实现部分解耦,使两者能独立变化。文章详细阐述了桥接模式的4个角色(抽象类、扩充抽象类、实现类接口、具体实现类)及其UML类图,分析了模式的优缺点和适用场景。实现部分以Java代码为例,展示了图像处理系统的桥接模式应用,包括抽象类Image、扩展类PNGImage、接口ImageImp和具体实现类WindowsImp的编写。最后提供了相关的学习资源,包括视频教程、专业书籍和电子文献。完整代码见GitHub仓库。
2025-07-29 22:04:11
708
原创 设计模式之建造者模式
本文介绍了建造者模式(Builder Pattern)的理论与实现。该模式将复杂对象的构建与表示分离,使相同构建过程可创建不同表示。文章详细阐述了模式的4个角色(Builder、ConcreteBuilder、Product、Director)及两种典型实现方式,并通过角色扮演游戏和文档转换两个案例展示具体应用。文中还讨论了模式扩展(省略Director、引入钩子方法)及其优缺点,指出该模式适用于算法独立于组件装配方式或需要不同对象表示的场景。
2025-07-26 00:45:44
999
原创 设计模式之原型模式
本文介绍了原型模式的理论与实现。原型模式通过复制已有对象创建新对象,包含抽象原型类、具体原型类和客户类三个角色。克隆机制分为浅克隆(仅复制值类型成员变量)和深克隆(复制所有成员变量)。文章还讨论了原型管理器、初始化克隆对象等扩展内容,分析了该模式的优缺点及适用场景。完整代码已上传至GitHub仓库。
2025-07-25 23:32:08
1015
原创 设计模式之抽象工厂模式
本文介绍了抽象工厂模式的概念、结构及实现方法。该模式通过创建产品族而非单一产品,提供了一种系统配置的灵活方式。文章详细说明了抽象工厂模式的4个角色(抽象工厂、具体工厂、抽象产品、具体产品)及其UML类图,并讨论了与单例模式和原型模式的两种扩展方式。通过Java代码实例演示了皮肤工厂的实现,展示了如何创建按钮、文本框等组件。同时指出该模式在新增产品族时方便(符合开闭原则),但在新增产品类型时需要较大修改的局限性。最后提供了完整项目代码的GitHub仓库链接。
2025-07-25 20:07:22
1058
原创 设计模式之工厂方法模式
本文介绍了工厂方法模式的理论与实现。工厂方法模式通过定义创建对象的接口让子类决定实例化哪个类,实现了对象创建的延迟。文章详细解析了模式中的4个角色(抽象产品、具体产品、抽象工厂、具体工厂)及其实现方式,并对比了包含/不包含类型控制参数的两种设计思路。通过日志记录器案例,展示了三种具体实现方式:无类型参数、基于字符串/枚举的类型参数、基于类限定名的类型参数。文章还分析了模式的优缺点,指出其扩展性好但可能导致子类爆炸的问题,并提出了通过参数化工厂方法来优化。完整代码已开源在GitHub仓库LearningCod
2025-07-25 07:06:24
1985
原创 设计模式之简单工厂模式
本文介绍了简单工厂模式(静态工厂方法模式)的理论与实现。该模式通过工厂类根据参数创建不同产品实例,包含工厂、抽象产品和具体产品三个角色。文章分析了其优缺点:优点是实现创建与使用分离,缺点是违反开闭原则且扩展性差,适用于创建对象较少的场景。通过Java代码演示了图表工厂的完整版和简化版实现(合并抽象产品与工厂类)。最后提供了相关学习资源,完整代码已上传GitHub仓库。
2025-07-25 05:42:59
1032
原创 设计模式之单例模式
本文介绍了单例模式的理论与实现,重点分析了饿汉式与懒汉式单例的优缺点及适用场景。单例模式确保类仅有一个实例,并提供全局访问点。饿汉式在类加载时实例化,实现简单但可能浪费资源;懒汉式延迟加载但需处理线程安全问题。文章还探讨了单例模式的扩展应用,包括创建子类实例的三种方法(硬编码、编译链接、注册表)以及多例模式。最后通过 Java 代码进行演示。
2025-07-25 02:56:34
1277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅