我是设计模式主题领域的新手,并且热衷于了解设计模式的实现变体。在网上的许多教程中,我已经在适配器设计模式中看到了适配器类的以下结构。(以下代码示例摘自维基百科)
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());
}
}上面的适配器类是按照适配器设计模式的指导原则编写的吗?
谢谢。
发布于 2013-04-13 14:13:28
适配器的用途是能够像对待其他类的实例一样对待对象。
在您提供的示例中,只需使用new ClassAFormat1(a) (其中a的类型为ClassA ),就可以将ClassA的实例“视为”ClassA。
使用添加的更改,您不能采用不同的ClassA实例并使它们的行为像StringProvider一样。在这种情况下,ClassAFormat1不能用作从ClassA到StringProvider的适配器(从某种意义上说,您不能为它提供任何ClassA实例并使其行为类似于StringProvider。
https://stackoverflow.com/questions/15984802
复制相似问题