type
Post
status
Published
date
Oct 1, 2025
slug
temporary
summary
tags
开发
category
技术分享
titleIcon
password
icon
insider
🎮

设计模式

订单创建入口:
这里有 4 个模式一起工作:
  1. OrderFacadeServiceImpl 这一层本身就是门面模式 对外只暴露 create/cancel/timeout/confirm/pay 这些稳定入口,内部再协调 orderService、库存、用户、藏品等多个子系统。
  1. @Facade 和 @DistributeLock 是代理模式 / AOP 业务方法只写核心逻辑,参数校验、统一返回、日志、异常包装、分布式锁都由切面织入:
3.orderValidatorChain.validate(request) 是责任链 下单前置校验被拆成多个独立节点,顺序串起来执行:
下单校验链是:用户校验 -> 商品校验 -> 库存校验。以后要加“风控校验”“限购校验”,直接再挂一个节点就行。
4.OrderResponseBuilder 是建造者模式 成功、失败、重复下单这些返回对象都通过 builder 统一构造,避免一堆重载构造器。
 
 
 
门面(Facade)- 统一的简单入口(屏蔽多个子系统编排,解耦(子系统变化影响不到客户端))
生产实例:Spring MVC 的 DispatcherServlet 就是门面,客户端只发 HTTP 请求,内部由 HandlerMapping、HandlerAdapter、ViewResolver 等子系统协作完成处理。
 
工厂方法(Factory Method)- 创建对象的接口,靠子类决定具体类 - 关注多态创建"哪种产品"
生产实例:SLF4J 的 LoggerFactory.getLogger(),调用方不关心底层是 Logback 还是 Log4j2,由具体 ILoggerFactory 子类决定创建哪种 Logger。
 
建造者(Builder)- 关注一步步组建过程
生产实例:OkHttp 的 Request.Builder / OkHttpClient.Builder,链式设置 url、header、timeout 等参数,最终 .build() 生成不可变对象,避免构造器参数爆炸。
 
抽象工厂(Abstract Factory)- 创建一整套相互关联或相互依赖的对象族 - 保证产品族一致性 - 客户端与具体类解耦 - 切换产品族方便 - 新增产品族容易 新增产品种类较麻烦
生产实例:Java JDBC 的 DataSource / Connection / Statement 体系。MySQL 的 MysqlDataSource 创建出的 Connection、Statement 天然配套;切换到 PostgreSQL 只需换一套工厂实现,客户端代码不变。
 
策略(Strategy)- 定义一系列算法,把它们封装起来,并且使它们可以互相替换。行为可运行时切换
生产实例:电商支付渠道选择——PayStrategy 接口有 AlipayStrategy、WechatPayStrategy、BankCardStrategy 等实现,下单时根据用户选择注入不同策略;Spring 中常配合 @Autowired Map<String, PayStrategy> 实现零 if-else 路由。
 
Proxy(代理)- 控制对某个对象的访问
生产实例:MyBatis 的 Mapper 代理——开发者只写接口,框架用 JDK 动态代理生成实现类,拦截方法调用后拼接 SQL、管理 Session,调用方完全感知不到代理的存在。
 
Decorator(装饰)- 在不改变原类的情况下,动态地给对象增加职责
生产实例:Java I/O 体系是经典装饰器——new BufferedInputStream(new FileInputStream(file)),BufferedInputStream 给 FileInputStream 透明地加上缓冲能力,还可以继续套 DataInputStream 等,层层增强而不改原始流。
 
 
Spring 常见注解大致分 5 类:
  1. Bean 定义类
      • @Component:通用组件
      • @Service:业务层组件
      • @Repository:持久层组件,常和异常转换相关
      • @Controller:Web 控制器
      • @RestController:返回 JSON/响应体的控制器,本质是 @Controller + @ResponseBody
  1. 依赖注入类
      • @Autowired:按类型注入
      • @Resource:按名称优先注入
      • @Qualifier:在多个同类型 Bean 中进一步指定
      • @Value:注入配置值、表达式值
  1. 配置类
      • @Configuration:配置类,声明 Bean 来源
      • @Bean:把方法返回对象注册为 Spring Bean
      • @ComponentScan:扫描指定包下的组件
  1. Web 类
      • @RequestMapping:通用请求映射
      • @GetMapping / @PostMapping:GET / POST 映射快捷方式
      • @RequestParam:接收 query 参数 / 表单参数
      • @PathVariable:接收路径参数
      • @RequestBody:接收请求体 JSON/XML
  1. 事务 / AOP 类
      • @Transactional:声明式事务,本质通常靠 AOP 代理实现
 
 
- 策略 + 工厂:支付渠道选择、链类型选择。
 
简历QA 项目QA 八股
 
 
 
 
 
 
 
 
 
Mermaid Chart
Mermaid Chart makes diagramming simple: create and edit flowcharts, sequence diagrams, and more online. Collaborate in real time and save hours.
Mermaid Chart
notion image
 
折腾博客表里站复盘暑期八股
Loading...
CamelliaV
CamelliaV
Java;前端;AI;ACGN;
公告
UI未显示/数据未更新/无图 → 刷新/等待异步加载
主入口Netlify:
备用入口Cloudflare:
[date] - 最后更新时间
[节选] - 摘自某篇完整文
 
目录
0%
2024-2026CamelliaV.

CamelliaV | Java;前端;AI;ACGN;