设计模式
文章平均质量分 88
设计模式是代码设计的“通用解法”,解决特定问题。分三类:创建型(如何创建对象,如单例)、结构型(如何组合对象,如适配器)、行为型(对象间如何协作,如观察者)。让代码更灵活、易维护、好复用。
杯莫停丶
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式之:简单工厂模式
简单工厂模式是一种创建型设计模式,通过工厂类集中管理对象的创建过程,实现客户端与具体产品的解耦。文章以支付系统为例,展示了三种支付方式(支付宝、微信、银联)的实现:首先定义Payment抽象接口,然后创建具体产品类实现该接口,最后构建PaymentFactory工厂类,提供两种创建方式(字符串参数和枚举参数)。该模式简化了对象的创建过程,提高了代码复用性,同时通过异常处理机制增强了健壮性。枚举方式相比字符串参数更安全可靠,是推荐的实现方式。原创 2025-10-17 09:57:42 · 1085 阅读 · 0 评论
-
设计模式之:工厂方法模式
工厂方法模式是一种创建型设计模式,通过定义创建对象的接口,让子类决定实例化哪个类。本文以日志记录系统为例,展示了该模式的结构:抽象产品(Logger接口)、具体产品(FileLogger、ConsoleLogger、DatabaseLogger)、抽象工厂(LoggerFactory接口)和具体工厂。该模式将对象创建延迟到子类,遵循开闭原则,提高了系统的可扩展性。示例中,不同日志记录器通过各自的工厂类创建,实现了记录方式的灵活切换。原创 2025-10-17 10:18:55 · 603 阅读 · 0 评论 -
设计模式之:抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供一个接口来创建一系列相关或相互依赖的对象,而无需指定具体类。该模式强调"产品族"概念,包含四个核心角色:抽象工厂、具体工厂、抽象产品和具体产品。通过跨平台UI组件库的示例展示了如何实现抽象工厂模式,包括定义抽象产品族(按钮、文本框、对话框)和实现不同平台(Windows/macOS)的具体产品。这种模式能确保创建的对象相互兼容,提高系统灵活性,适合需要支持多套产品系列或跨平台开发的场景。原创 2025-10-20 09:28:37 · 769 阅读 · 0 评论 -
设计模式之:模板模式
模板模式是一种行为型设计模式,它定义算法骨架,将特定步骤延迟到子类实现。核心思想是通过抽象类固定流程,允许子类重写部分步骤而不改变整体结构。以饮料制作为例,抽象类BeverageMaker定义了烧水、冲泡、倒杯和加料的通用流程,具体类如TeaMaker和CoffeeMaker则实现各自的冲泡和加料方法。该模式通过模板方法和钩子方法实现灵活扩展,适用于流程固定但部分步骤差异化的场景,如饮料制作、数据处理等业务场景。原创 2025-10-27 09:02:36 · 1371 阅读 · 0 评论 -
设计模式之:单例模式
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。摘要介绍了5种实现方式:1)饿汉式(线程安全,类加载时实例化);2)懒汉式(延迟加载,基础版线程不安全,同步方法版线程安全但性能差);3)双重检查锁(高性能线程安全);4)静态内部类(推荐方式,结合线程安全和延迟加载);5)枚举单例(绝对防止多实例)。最后展示了一个配置管理器的单例应用示例,使用静态内部类实现。原创 2025-10-21 09:39:18 · 580 阅读 · 0 评论 -
设计模式之:策略模式
策略模式是一种行为型设计模式,它将算法封装成独立类,使它们可以互相替换。该模式通过定义策略接口、具体策略类和使用策略的上下文类,实现了算法与客户端的解耦。以支付系统为例,不同支付方式(如支付宝、微信支付)作为具体策略实现统一接口,支付上下文根据需求动态选择支付策略。这种模式提高了系统的灵活性和可扩展性,使算法变化不影响客户端代码。原创 2025-10-24 08:45:00 · 811 阅读 · 0 评论 -
设计模式之:命令模式
摘要 命令模式是一种行为型设计模式,它将请求封装为对象,实现请求的发起者与执行者的解耦。该模式通过命令接口、具体命令、接收者、调用者和客户端五个核心角色构成,支持命令的排队、记录和撤销操作。文章以智能家居系统为例,展示了电灯、空调、电视等设备作为接收者,通过具体命令类实现开关、调节等功能,体现命令模式在实际应用中的灵活性和扩展性。这种模式特别适合需要实现命令队列、撤销/重做或日志记录等功能的场景。原创 2025-10-24 09:30:17 · 533 阅读 · 0 评论 -
设计模式之:组合模式
组合模式是一种结构型设计模式,用于将对象组织成树形结构以表示"部分-整体"的层次关系。它通过统一的组件接口(Component)使客户端可以一致地处理单个对象(Leaf)和组合对象(Composite)。典型应用场景包括文件系统(文件/文件夹)、组织架构等层次结构。该模式包含三个核心角色:定义通用操作的组件接口、无子节点的叶子节点对象,以及包含子节点的容器对象。实现时需注意递归处理子组件、统一操作接口等问题,其优势在于简化客户端代码、易于扩展新组件类型。原创 2025-10-23 14:08:24 · 676 阅读 · 0 评论 -
设计模式之:代理模式
代理模式是一种结构型设计模式,通过引入代理对象间接访问目标对象,在不改变目标对象的情况下增加额外功能或控制访问。文章以明星与经纪人的关系为例,说明了代理模式的核心思想,并介绍了静态代理和动态代理两种类型。通过图片查看器的代码示例,展示了代理模式的具体实现:Image接口作为抽象主题,RealImage作为真实主题处理高分辨率图片加载,ImageProxy作为代理类实现权限检查、缓存管理和延迟加载等功能。代理模式在需要控制对象访问或添加额外功能时非常有用。原创 2025-10-24 09:10:55 · 466 阅读 · 0 评论 -
设计模式之:享元模式
享元模式是一种通过共享技术减少内存使用的设计模式,将对象属性分为可共享的内部状态(如字体、大小)和需单独维护的外部状态(如位置、颜色)。该模式包含享元接口、具体享元、享元工厂和客户端四个角色,适用于处理大量相似对象的场景(如文字编辑器中的字符显示)。示例展示了如何通过享元工厂管理字符对象的创建与共享,相同格式的字符共享内部状态,仅存储不同的外部状态,从而显著降低内存消耗。原创 2025-10-23 11:16:19 · 786 阅读 · 0 评论 -
设计模式之:外观模式
外观模式是一种结构型设计模式,它为复杂子系统提供统一的简化接口,隐藏内部实现细节。核心思想是通过中间层解耦客户端与子系统,类比餐厅服务员协调后厨工作。模式包含子系统类(如CPU、内存等)和外观类(如计算机),后者封装复杂调用流程。实际应用中,如电商订单系统通过OrderProcessingFacade整合库存、支付、物流等子系统,对外只暴露简单的processOrder方法。客户端只需与外观类交互,无需了解各子系统细节,既简化了调用又降低了耦合度。原创 2025-10-23 09:05:03 · 636 阅读 · 0 评论 -
设计模式之:建造者模式
建造者模式是一种创建型设计模式,它将复杂对象的构建过程与其表示分离,使同样的构建过程可以创建不同的对象。摘要如下: 核心思想:分步构建复杂对象,客户端可精细控制创建过程 典型结构:包含产品、抽象建造者、具体建造者和指挥者四个角色 应用示例:通过计算机配置系统展示模式实现,产品类(Computer)包含必需和可选部件,通过内部建造者类(ComputerBuilder)提供链式方法设置参数并构建最终对象 优势:支持灵活配置可选参数,保证构建过程的一致性和对象不可变性 该模式特别适用于需要分步构建、包含多种配置选原创 2025-10-20 09:30:44 · 1478 阅读 · 0 评论 -
设计模式之:原型模式
本文介绍了原型设计模式(Prototype Pattern),这是一种通过复制现有对象而非新建实例来创建对象的创建型设计模式。文章以印章复制类比原型模式的核心思想:基于模板快速生成新对象。模式包含三个角色:抽象原型接口、具体原型实现类和客户端。通过图形复制系统的代码示例,展示了圆形和矩形类如何实现Cloneable接口完成克隆,并处理引用类型的深拷贝问题。文中还模拟了复杂初始化过程,对比了直接构造与克隆方式的效率差异,突出了原型模式在对象创建成本较高时的优势。原创 2025-10-21 09:15:00 · 1871 阅读 · 0 评论 -
设计模式之:装饰器模式
装饰器模式是一种动态扩展对象功能的设计模式,通过包装原有对象添加新功能而不改变其结构。文章以咖啡店为例,展示了如何通过组件接口(Beverage)、具体组件(各种咖啡)、装饰器抽象类(CondimentDecorator)和具体装饰器(各种调料)实现该模式。客户端代码演示了如何组合不同装饰器来定制咖啡(如浓缩咖啡+牛奶+糖),保持代码灵活性和可扩展性,避免因功能扩展导致的类爆炸问题。原创 2025-10-22 15:22:03 · 792 阅读 · 0 评论 -
设计模式之:桥接模式
桥接模式是一种结构型设计模式,通过分离抽象部分与实现部分,使两者能独立变化。它使用组合而非继承,降低抽象与实现间的耦合度。模式包含四个核心角色:抽象化、扩展抽象化、实现化接口和具体实现类。示例展示了形状(抽象)与颜色(实现)的解耦:Shape类持有Color接口引用,不同形状和颜色可自由组合。这种设计提高了系统的扩展性,新增形状或颜色都无需修改现有代码,只需实现相应接口即可。桥接模式特别适用于多维度变化的场景。原创 2025-10-22 11:03:28 · 766 阅读 · 0 评论 -
设计模式之:适配器模式
适配器模式是一种结构型设计模式,用于使不兼容的接口能够协同工作。它通过转换接口充当两个不兼容类之间的桥梁,类似于电源适配器的作用。适配器模式包含三个核心角色:目标接口(客户端期望的接口)、适配者(需要被适配的现有接口)和适配器(转换接口的桥梁)。实现方式主要有两种:类适配器(通过继承适配者实现)和对象适配器(通过组合适配者对象实现)。典型应用场景包括支付系统整合、媒体播放器等需要兼容不同接口的系统。该模式提高了代码复用性,但过多使用可能增加系统复杂度。原创 2025-10-22 09:14:48 · 1026 阅读 · 0 评论
分享