Java-适配器设计模式实现的变化



我是设计模式主题领域的新手,渴望了解设计模式的实现变化。我在web上的许多教程中看到适配器设计模式中适配器类的以下结构。(以下代码样本摘自wikipedia)

public class ClassAFormat1 implements StringProvider {
    private ClassA classA = null;
    public ClassAFormat1(final ClassA A) {
        classA = A;
    }
    public String getStringData() {
        return format(classA.toString());
    }
}

如果我没弄错的话,在这个例子中,ClassA是被适应者,StringProvider是目标(这里没有提供类)。

通过在target的方法中定义和初始化adaptee类,我对上面的代码做了一个小的调整。我知道这很奇怪,但我想知道它是否仍然属于适配器设计模式。
public class ClassAFormat1 implements StringProvider {

    public String getStringData() {
               ClassA classA = new ClassA();
        return format(classA.toString());
    }
}

上面的适配器类是否按照适配器设计模式的指导原则编写的?

谢谢。

适配器的目的是能够将对象视为其他类的实例。
在您提供的示例中,ClassA的实例可以简单地通过使用new ClassAFormat1(a)(其中a的类型为ClassA)来"处理"为StringProvider

随着您添加的更改,您不能采取ClassA的不同实例并使它们表现为StringProvider。在这种情况下,ClassAFormat1不能用作从ClassAStringProvider的适配器(因为您不能给它任何ClassA的实例并使其行为像StringProvider一样)。

最新更新