Category: Java
-
Java 策略模式(Strategy) 示例代码
Public策略模式:定义一系列算法,把每一个算法封装起来,并且使它们可互相替换。让算法的变化独立于使用算法的客户端。 核心角色: Strategy(策略接口):统一算法行为接口 ConcreteStrategy(具体策略):实现不同算法 Context(环境上下文):持有策略对象,对外提供调用,委托策略执行逻
-
Java 代理模式(Proxy)示例代码
Public代理模式分为静态代理、JDK 动态代理(接口代理)、CGLIB 动态代理(类代理,无需接口)。 作用:通过代理对象控制对真实对象的访问,在不修改目标类代码的前提下增加日志、权限、事务等附加逻辑。 1. 业务接口 & 真实目标类 // 业务接口 public interface UserService
-
Java 享元模式 (Flyweight) 示例代码
Public享元模式:运用共享技术,有效支持大量细粒度对象。区分内部状态(可共享,不变)和外部状态(不可共享,由外部传入),减少对象创建数量,降低内存占用。 适用场景:系统需要创建大量同类对象,造成内存压力;对象大部分状态可以外部化。 UML 角色 Flyweight(抽象享元):定义接口,接收外部状态 Con
-
Java 外观模式(Facade)示例代码
Public外观模式:为子系统的一组接口提供一个统一高层入口,隐藏子系统内部复杂细节,客户端只需要调用外观类,不用直接和多个子系统类交互,降低耦合。 角色: 子系统类:完成各自独立功能,对外提供方法,不知道外观类存在 外观 (Facade) 类:持有各个子系统对象,封装组合调用,对外提供简单接口 客户端:只依赖
-
Java 组合模式 (Composite) 示例代码
Public组合模式:将对象组合成树形结构以表示 “部分‑整体” 的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 角色: 抽象构件 (Component):统一叶子、容器的公共接口 叶子构件 (Leaf):叶子节点,没有子节点 容器构件 (Composite):包含子节点,可以管理子元素 Clien
-
Java 装饰器模式(Decorator)示例代码
Public装饰器模式:动态给对象增加额外职责,不修改原有类代码,通过包装原有对象实现功能增强,Java IO 就是典型装饰器模式。 核心角色: 抽象组件 (Component):定义被装饰对象和装饰器共同接口 具体组件 (ConcreteComponent):原始被装饰对象 抽象装饰器 (Decorator)
-
Java 桥接模式(Bridge) 示例代码
Public桥接模式核心思想:将抽象与实现分离,让两者可以独立扩展,避免类爆炸。 Abstraction:抽象层,持有实现层的引用(桥) RefinedAbstraction:扩展抽象 Implementor:实现接口 ConcreteImplementor:具体实现 场景举例:手机品牌(抽象) + 软件(实现
-
Java 适配器模式(Adapter)示例代码
Public适配器模式分为类适配器(继承实现)、对象适配器(组合实现,实际项目最常用),还有接口适配器(缺省适配器)。 核心作用:将一个类的接口,转换成客户期望的另一个接口,让原本接口不兼容的类可以一起工作。 1、对象适配器(推荐,组合方式,Java 优先使用,规避单继承限制)<
-
Java原型模式(Prototype)示例代码
Public原型模式:通过复制已有对象(原型)来创建新对象,而不是 new 新建对象,适合对象创建成本高的场景。 Java 两种实现方式: 实现 Cloneable 接口,重写 clone()(浅拷贝) 序列化实现深拷贝 1、浅拷贝示例(Cloneable) 原型对象 // 实现Cloneable标记接
-
Java 建造者模式(Builder)示例代码
Public建造者模式:用于构建复杂对象,把对象的构造和表示分离,支持链式调用,适合属性多、部分属性可选的实体。 两种常见写法: 传统独立 Builder 类(GoF 标准建造者) 静态内部类 Builder(日常开发最常用,SpringBoot、Lombok@Builder 底层思想) 方式 1:静态内部类