知识卡片
类适配器与对象适配器的取舍
内容
[[适配器模式的定义与三个角色]]的实现分两种:类适配器通过继承Adaptee、实现Target完成 转换;对象适配器通过关联持有Adaptee实例完成委托。当源角色能力被拆分到多个接口时,类 适配器会因Java不支持多继承而失效,只能用对象适配器。对象适配器依赖关联而非继承,设计上 更灵活,实际项目中使用更多。发散:这印证”组合优于继承”的通用倾向。
参考来源
- 位置:《设计模式之禅(第2版)》第19章《适配器模式》(源文件:_epub-src/text/part0087.html)
- 结论依据:原文分析源接口拆分为三个后类适配器因Java不支持多继承而失效,转而用类关联方式实现OuterUserInfo,并总结"对象适配器和类适配器的区别是:类适配器是类间继承,对象适配器是对象的合成关系……在实际项目中,对象适配器使用到场景相对较多"。
- 原始内容:Java是不支持多继承的,你难道想让OuterUserInfo继承三个实现类?此路不通,再想一个办法,对哦,可以使用类关联的办法嘛!……对象适配器和类适配器的区别是:类适配器是类间继承,对象适配器是对象的合成关系……在实际项目中,对象适配器使用到场景相对较多。