
java设计模式
文章平均质量分 76
码农的天塌了
这个作者很懒,什么都没留下…
展开
-
java设计模式之状态模式(State Pattern)
该模式通过将不同状态下的行为封装到独立的类中,使得状态转换更加清晰,避免了复杂的条件判断。:每个状态类在行为方法中自行决定后续状态(分散管理,更符合单一职责)。:处理订单状态(待支付、已支付、已发货、已完成)。:通过封装状态及其转换逻辑,使代码更易维护和扩展。:将状态行为委托给独立对象,环境类仅维护当前状态。:控制流程节点状态(审批中、已通过、已驳回)。每个状态类封装对应行为,并处理状态转换逻辑。:适用于对象行为随状态变化且状态较多的场景。:例如订单状态(待支付、已支付、已发货)。:避免在代码中频繁使用。原创 2025-03-24 20:15:37 · 654 阅读 · 0 评论 -
Java设计模式之命令模式(Command Pattern)
命令模式通过将操作封装为对象,实现了请求发送者与接收者的解耦,适用于需要支持撤销、事务、批量操作等复杂场景。,它将请求封装为独立的对象,使得不同请求的调用、队列化、日志记录或撤销操作成为可能。该模式通过解耦请求的发送者与接收者,增强系统的灵活性和扩展性。:将请求转换为包含所有请求信息的独立对象(命令),支持参数化、延迟执行、撤销/重做等功能。:按钮点击事件绑定命令对象,支持撤销(如Photoshop的“撤销上一步”)。:数据库事务的提交与回滚可视为命令模式的应用。支持命令的队列、日志、撤销/重做。原创 2025-03-20 10:50:50 · 490 阅读 · 0 评论 -
Java设计模式之模板方法模式(Template Method Pattern)
假设需要实现制作茶和咖啡的流程,两者步骤类似(烧水、冲泡、倒入杯子),但具体冲泡方法和添加调料不同。:框架定义通用流程,允许用户自定义部分步骤(如Servlet生命周期、JUnit测试流程)。:当多个类有相似的流程,但某些步骤实现不同时(如数据处理流程、文件解析流程)。:适用于具有固定流程但部分步骤需要定制的场景,如框架扩展、多态流程处理。,用于定义算法的骨架,将某些步骤的具体实现延迟到子类中。:通过父类定义算法流程,子类灵活实现具体步骤,实现代码复用和流程控制。方法为模板方法,由框架调用。原创 2025-03-19 11:00:57 · 483 阅读 · 0 评论 -
Java 设计模式之享元模式(Flyweight Pattern)
旨在通过共享对象来有效支持大量细粒度对象的复用,从而减少内存占用和提高性能。假设需要绘制大量树(Tree)对象,树的类型(名称、颜色)可共享,位置和年龄为外部状态。类的常量池是享元模式的典型实现,相同字面量的字符串对象被复用。,适用于存在大量重复对象且对象的大部分状态可以外部化的场景。:通过共享内部状态减少对象数量,外部状态由客户端传递。:存在大量相似对象且内存占用是瓶颈时优先考虑。:享元工厂管理共享对象池,确保唯一性。:字符的字体、颜色、大小。:字符在文档中的位置。:子弹的位置、速度。原创 2025-03-17 15:48:38 · 494 阅读 · 0 评论 -
Java设计模式之组合模式(Composite Pattern)
实际开发中需注意避免叶子节点被迫实现冗余方法(可通过接口分离优化)。模拟文件系统中的文件和文件夹结构,文件夹可以包含文件或其他文件夹。,实现了对单个对象和组合对象的一致性处理。,无需关心具体是叶子节点还是容器节点。,用于将对象组合成树形结构以表示。:如 Java Swing 中的。的场景,能够显著提升代码的。:支持多级菜单项和子菜单。:公司部门与员工的关系。:处理嵌套的节点结构。原创 2025-03-15 09:00:00 · 372 阅读 · 0 评论 -
Java设计模式之外观模式(Facacde Pattern)
旨在为复杂的子系统提供一个统一的、简化的高层接口,使得客户端更容易使用子系统功能。假设家庭影院包含多个设备(灯光、音响、投影仪),通过外观模式一键启动“观影模式”。:当系统存在多个复杂模块或接口时,提供一个统一入口。:减少客户端与子系统的直接依赖,提高系统可维护性。:为不同层次的模块提供统一接口(如API网关)。:外观类通过组合子系统对象,对外暴露统一方法。:通过封装复杂子系统,提供简洁易用的接口。:ZIP、RAR、7z 等压缩算法。:多个微服务(订单、用户、支付)。:网关统一处理鉴权、限流、路由。原创 2025-03-13 14:48:48 · 672 阅读 · 0 评论 -
java设计模式之桥接模式
假设需要设计一个系统,支持不同品牌手机(华为、苹果)运行不同的软件(相机、通讯录),且手机品牌与软件功能可以独立扩展。通过组合而非继承的方式,桥接模式解决了多层继承带来的类爆炸问题,并提高了系统的扩展性。:当一个类存在多个独立变化的维度,且需要灵活组合时(如手机品牌与手机软件)。:当系统中存在多个独立变化的维度,且需要灵活组合时优先考虑桥接模式。:不同操作系统的绘制实现(如Windows、Linux)。:抽象化类持有实现化接口的引用,通过委托调用实现功能。:通过组合替代继承,解决多维度变化的扩展问题。原创 2025-03-12 08:59:12 · 431 阅读 · 0 评论 -
java设计模式之适配器模式
适配器模式是解决接口不兼容问题的利器,尤其在以下场景中效果显著:• 系统需要集成外部组件或遗留代码。• 需要统一多个类的接口调用方式。• 希望在不修改原有代码的前提下扩展功能。通过合理使用适配器模式,可以提升系统的灵活性和可维护性,降低模块间的耦合度。原创 2025-03-10 09:21:25 · 637 阅读 · 0 评论 -
Java设计模式之装饰者模式
装饰者模式(Decorator Pattern)是一种结构型设计模式,允许动态地向对象添加额外的职责。它通过将对象包装在装饰者类中,以提供比继承更灵活的扩展功能方式。假设咖啡店销售多种饮料(如浓缩咖啡、黑咖啡),并允许添加多种调料(如牛奶、摩卡、糖)。:多层装饰可能导致对象链较长,不易追踪问题。:继承组件接口,并持有一个组件对象的引用。:扩展装饰者抽象类,添加具体的装饰功能。:定义被装饰对象和装饰者的共同接口。:通过多个装饰者类灵活组合不同功能。:在运行时添加或修改对象的行为。:实现组件接口的基础对象。原创 2025-03-11 15:36:27 · 575 阅读 · 0 评论 -
java设计模式之建造者模式
建造者模式是一种创建型设计模式,用于分步骤构建复杂对象,尤其适用于对象包含多个可选参数或需要灵活组合配置的场景。该模式通过将对象的构建与表示分离,使得同样的构建过程可以创建不同的对象表示。1.角色划分:◦ 产品(Product):最终要构建的复杂对象。◦ 抽象建造者(Builder):定义构建产品的各个步骤的接口。◦ 具体建造者(Concrete Builder):实现抽象建造者接口,提供具体的构建逻辑。◦ 指挥者(Director):控制构建流程(可选,可直接在客户端调用建造者)。◦ 客户端(C原创 2025-03-09 09:00:00 · 463 阅读 · 0 评论 -
java设计模式之原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需知道对象的具体创建细节。该模式主要用于创建对象的成本较高或者需要避免重复创建相同对象的场景。原创 2025-03-07 09:33:06 · 945 阅读 · 0 评论 -
java设计模式之策略模式
2. 实现具体策略类3. 创建上下文类4. 使用策略模式代码解释•策略接口 OperationStrategy:定义了一个 doOperation 方法,用于执行具体的运算操作。•具体策略类 AdditionStrategy、SubtractionStrategy 和 MultiplicationStrategy:分别实现了 OperationStrategy 接口,提供了加法、减法和乘法的具体实现。•上下文类 CalculatorContext。原创 2025-03-06 10:13:53 · 2129 阅读 · 0 评论 -
java设计模式之代理模式
• UserService 接口定义了一个 addUser 方法,目标对象和代理对象都需要实现该方法。• UserServiceImpl 类是目标对象,实现了 UserService 接口,完成具体的业务逻辑。• UserServiceProxy 类是代理对象,也实现了 UserService 接口,在 addUser 方法中调用了目标对象的 addUser方法,并在前后添加了额外的逻辑。• 在 main 方法中,创建了目标对象和代理对象,并调用代理对象的 addUser 方法。原创 2025-03-05 10:42:25 · 685 阅读 · 0 评论 -
java设计模式之观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。在这种模式中,被观察的对象称为主题(Subject),依赖于主题的对象称为观察者(Observer)。原创 2025-03-03 08:52:13 · 429 阅读 · 0 评论 -
java设计模式之工厂模式
•简单工厂模式:适用于创建对象逻辑简单,产品种类较少的场景。•工厂方法模式:适用于需要根据不同条件创建不同类型对象,且需要满足开闭原则的场景。•抽象工厂模式:适用于创建一组相关的产品对象,且产品之间存在一定的关联关系的场景。原创 2025-03-01 20:25:45 · 226 阅读 · 0 评论 -
java设计模式之单例模式,七种单例模式都在这
在选择单例模式的实现方式时,需要根据具体的需求和场景来决定。如果对性能要求较高,且不需要延迟加载,可以选择饿汉式;如果需要延迟加载,且在多线程环境下使用,建议选择双重检查锁定或静态内部类的方式;如果需要防止反序列化重新创建对象,枚举是最好的选择。原创 2025-02-28 16:29:24 · 358 阅读 · 0 评论