type
Post
status
Published
date
Oct 1, 2025
slug
temporary
summary
tags
开发
category
技术分享
titleIcon
password
icon
insider
设计模式
订单创建入口:
这里有 4 个模式一起工作:
- OrderFacadeServiceImpl 这一层本身就是门面模式 对外只暴露 create/cancel/timeout/confirm/pay 这些稳定入口,内部再协调 orderService、库存、用户、藏品等多个子系统。
- @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 类:
- Bean 定义类
@Component:通用组件@Service:业务层组件@Repository:持久层组件,常和异常转换相关@Controller:Web 控制器@RestController:返回 JSON/响应体的控制器,本质是@Controller + @ResponseBody
- 依赖注入类
@Autowired:按类型注入@Resource:按名称优先注入@Qualifier:在多个同类型 Bean 中进一步指定@Value:注入配置值、表达式值
- 配置类
@Configuration:配置类,声明 Bean 来源@Bean:把方法返回对象注册为 Spring Bean@ComponentScan:扫描指定包下的组件
- Web 类
@RequestMapping:通用请求映射@GetMapping/@PostMapping:GET / POST 映射快捷方式@RequestParam:接收 query 参数 / 表单参数@PathVariable:接收路径参数@RequestBody:接收请求体 JSON/XML
- 事务 / AOP 类
@Transactional:声明式事务,本质通常靠 AOP 代理实现
- 策略 + 工厂:支付渠道选择、链类型选择。
简历QA 项目QA 八股

- 作者:CamelliaV
- 链接:https://camelliav.netlify.app/article/temporary
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。







.png?table=block&id=2b3ca147-5df8-80c8-94b3-f9c89b454622&t=2b3ca147-5df8-80c8-94b3-f9c89b454622)

![[2026.3.24]暑期面试复盘](https://www.notion.so/image/attachment%3Ab7aa5da1-bd4b-4428-8931-1ca5096cf7a8%3AKonachan.com_-_399937_clouds_no_humans_original_signed_sky_tree_yu_jing.png?table=block&id=2b4ca147-5df8-80fc-9d50-dddfb95cb8b3&t=2b4ca147-5df8-80fc-9d50-dddfb95cb8b3)

