适配器设计模式,一个Adaptee类继承另一个类?

问题描述 投票:1回答:1

我最近遇到了这个问题,我只是想知道我的答案是否正确,如果不正确,我哪里做错了。

我的任务是

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的功能就会发生变化,这就不是设计模式适配器的目的了。

谢谢:-)

design-patterns adapter
1个回答
1
投票

适配器模式 (就像所有其他GoF设计模式一样)有一个完善的文档结构。有两种方法来实现这个模式。

  1. 对象适配器 Adapter 类包装的 Adaptee.
  2. 类适配器:该 Adapter 类继承自 Adaptee.

考虑到这一点,我们来看一下所提问题的关键部分 。

请解释让B继承A,C继承B是否合理。

基于以下原因,这样做是没有意义的。

  1. 如果要实现适配器模式,这就不能叫作 适配器模式 本身 C 既不是 对象适配器 也不是 类适配器)
  2. 不管是不是适配器模式,它都违反了 IS-A 的关系。假设类 AAndroid 和类 BBlackberry. 如果 B 继承 A它违反了 IS-A 关系,因为 Android 不是 Blackberry.

2. 以上正是我们为什么需要 适配器 模式。我们创建一个 BlackberryToAndroidAdapter 类,继承自 AndroidBlackberry 这不过是一个例子。类适配器 模式,而在本题中,这是该类的 C.

© www.soinside.com 2019 - 2024. All rights reserved.