一个 Adaptee class 继承另一个的适配器设计模式?
Adapter Design Pattern with one Adaptee class inheriting the other?
我最近遇到了这个问题,我只是想知道我的回答是否正确,如果不正确,我在哪里犯了错误。
我的任务:
类 A 和 B 的签名不兼容。 Class C是用Design Pattern Adapter连接A和B。
让C继承A和B有什么好处?解释让 B 继承 A 和 C 继承 B 是否有意义。
我的回答:
让C继承A和B的好处是可以解决签名冲突,同时A和B仍然可以单独实例化。
B继承A,C继承B是没有意义的,因为如果之前引起冲突的功能是从A继承给C的,B必须接管A的实现,功能B 的将被更改,这不是设计模式适配器的目的。
谢谢 :-)
适配器模式(与所有其他 GoF 设计模式一样)具有详细记录的结构。有两种方法可以实现这个模式:
- 对象适配器:
Adapter
class 包装 Adaptee
。
- Class 适配器:
Adapter
class 继承自 Adaptee
.
考虑到这一点,让我们看看所问问题的关键部分:
Explain whether it would make sense to have B inherit from A and C
inherit from B.
这样做没有意义,原因如下:
- 如果要实现适配器模式,这不能称为 适配器模式 本身(因为
C
既不是 对象 Aadapter 也不是 Class Adapter)
- 适配器模式与否,它违反了 IS-A 关系。假设class
A
是Android
,classB
是Blackberry
。如果 B
继承 A
,它违反了 IS-A 关系,因为 Android
不是 Blackberry
。
上面的点2.正是我们需要Adapter模式的原因。我们创建一个继承自 Android
和 Blackberry
的 BlackberryToAndroidAdapter
class 这不过是 Class 适配器的一个例子 模式,在这个问题的上下文中,这是 class C
.
我最近遇到了这个问题,我只是想知道我的回答是否正确,如果不正确,我在哪里犯了错误。
我的任务:
类 A 和 B 的签名不兼容。 Class C是用Design Pattern Adapter连接A和B。
让C继承A和B有什么好处?解释让 B 继承 A 和 C 继承 B 是否有意义。
我的回答:
让C继承A和B的好处是可以解决签名冲突,同时A和B仍然可以单独实例化。
B继承A,C继承B是没有意义的,因为如果之前引起冲突的功能是从A继承给C的,B必须接管A的实现,功能B 的将被更改,这不是设计模式适配器的目的。
谢谢 :-)
适配器模式(与所有其他 GoF 设计模式一样)具有详细记录的结构。有两种方法可以实现这个模式:
- 对象适配器:
Adapter
class 包装Adaptee
。 - Class 适配器:
Adapter
class 继承自Adaptee
.
考虑到这一点,让我们看看所问问题的关键部分:
Explain whether it would make sense to have B inherit from A and C inherit from B.
这样做没有意义,原因如下:
- 如果要实现适配器模式,这不能称为 适配器模式 本身(因为
C
既不是 对象 Aadapter 也不是 Class Adapter) - 适配器模式与否,它违反了 IS-A 关系。假设class
A
是Android
,classB
是Blackberry
。如果B
继承A
,它违反了 IS-A 关系,因为Android
不是Blackberry
。
点2.正是我们需要Adapter模式的原因。我们创建一个继承自 Android
和 Blackberry
的 BlackberryToAndroidAdapter
class 这不过是 Class 适配器的一个例子 模式,在这个问题的上下文中,这是 class C
.