我是设计模式主题领域的新手,渴望了解设计模式的实现变化。我在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
不能用作从ClassA
到StringProvider
的适配器(因为您不能给它任何ClassA
的实例并使其行为像StringProvider
一样)。