具有一个Adaptee类的适配器设计模式继承了另一个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 class-design ooad design
1个回答
1
投票

Adapter Pattern(与所有其他GoF设计模式一样)具有详细记录的结构。有两种方法可以实现此模式:

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

考虑到这一点,让我们看待所问问题的关键部分:

[说明B从A和C继承是否有意义 从B继承。

由于以下原因,这样做没有意义:

  1. 如果要实现适配器模式,就不能将其称为适配器模式本身(因为C既不是Object Aadapter也不是Class Adapter)] >
  2. 或没有适配器模式,它违反了[[IS-A
  3. ]关系。假设类别AAndroid,类别BBlackberry。如果B继承A,则它违反IS-A关系,因为Android不是Blackberry。 上面的[[Point 2。
]正是我们需要

Adapter模式的原因。我们创建一个继承自BlackberryToAndroidAdapterAndroidBlackberry类。这不过是Class Adapter模式的一个示例,在此问题的上下文中,这是C类。

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