我有两个类似的具体类,由两个不同的第三方提供(我无法修改它们)。
如果我使用经典的 GoF 适配器模式,而是让我的适配器扩展具体的目标类,是否可以?或者这很糟糕?
例子:
public class A {
public void doSomething() {
// some code
}
}
public class B {
public void similarDoSomethingMethod() {
// some code
}
}
public class BAdapter extends A {
private B b;
public BAdapter(B b) {
this.b = b;
}
@Overrides
public void doSomething() {
b.similarDoSomethingMethod();
}
}
最佳答案
适配器在适配器中提供客户端类 a protected variation ,如果您按照描述应用它:
这意味着,如果具体的第三方类不断发展,您就可以对客户端进行一些保护。
如果您选择扩展 A(即,使 A 的接口(interface)成为 Client 使用的接口(interface)),如果 A(您无法控制的第三方类)发生变化,您的客户端将被破坏。
另外,如果你想支持一个新的第三方扩展,你如何将它添加到你的设计中?
请注意,如果 A 在 Adapter 的“干净”应用程序(上图)中发生更改,则只有 ServiceAdapterA 会中断。此外,如果您添加新的第三方实现,您只需要创建一个新的适配器并使适配的服务方法工作。
关于java - 可以在具体类上使用适配器模式吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22491368/