You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

经典定时门案例中Class Adapter模式的角色解析

类适配器模式在定时安全门案例中的角色澄清

在Uncle Bob的ISP教程定时安全门案例里,类适配器模式的核心是通过多重继承衔接TimerClient和Door两个层级,我们可以严格对应GoF的类适配器角色定义来澄清:

核心角色对应

  • 适配接口(目标接口):TimerClient
    这是系统期望的接口规范——Timer组件只能调用实现了TimerClient接口的对象,我们的目标就是让Door相关类能被Timer驱动,所以TimerClient是适配的目标。
  • 被适配者:Door(抽象类或具体Door实现类)
    这是已有业务组件,它的接口(比如lock()、unlock())不符合TimerClient的要求(需要实现timeOut()方法),是需要被适配的对象。
  • 适配器:TimedDoor
    它同时继承TimerClient(目标接口)和Door(被适配者),在TimedDoor中实现TimerClient要求的timeOut()方法,内部调用Door的lock()方法完成业务逻辑,从而把Door的接口转换为TimerClient能识别的格式。

对两种理解的澄清

  1. 第一种理解是正确的:完全符合类适配器“多重继承目标接口+被适配者类,适配器承担转换逻辑”的核心设计,TimedDoor作为适配器,衔接了两个原本不兼容的层级。
  2. 第二种理解错误:TimedDoor并非兼具适配器与被适配者角色。类适配器的被适配者是原本就存在的、接口不匹配的业务组件(也就是Door),而TimedDoor是专门为适配创建的中间类,它的职责是转换接口,而非作为被适配的对象——这种混淆可能是把类适配器和对象适配器的逻辑搞混了,对象适配器是通过组合被适配者实现,而类适配器的核心是多重继承。

内容的提问来源于stack exchange,提问作者Shaharg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:22:04