【发布时间】:2020-09-10 07:32:23
【问题描述】:
我最近遇到了这个问题,我只是好奇我的答案是否正确,如果不是,我在哪里犯了错误。
我的任务:
A 类和 B 类的签名不兼容。 C类是用设计模式适配器连接A和B。
让 C 从 A 和 B 继承有什么好处?解释让 B 从 A 继承和 C 从 B 继承是否有意义。
我的回答:
让C继承A和B的好处是可以解决签名冲突,而A和B仍然可以分别实例化。
让B继承A和C继承B是没有意义的,因为如果之前引起冲突的功能从A继承到C,B必须接管A的实现,B的功能会被改变,这不是设计模式适配器的目的。
谢谢:-)
【问题讨论】:
-
哪一类应该适应另一类?如果您希望 A 的实例作为 B 的实例工作,则 C 应该扩展 B,包装 A 的实例,实现 B 所需的接口,并调用 A 实例的适当方法。
-
我认为任务不是关于 A 是否应该适应 B 或反之亦然(例如,您可以假设 B 应该适应 A),而是关于如果 C 继承的优势从 A 和 B 以及天气让 B 从 A 继承和 C 从 B 继承是有意义的。
-
“A 和 B 仍然可以单独实例化”是什么意思?您的其余答案看起来不错。
标签: design-patterns adapter class-design ooad