我有两个类似的具体类,由两个不同的第三方提供(我无法修改它们)。

如果我使用经典的 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/

10-13 09:11