我是设计模式主题领域的新手,并且热衷于理解设计模式的实现变化。在Web上的许多教程中,我已经在适配器设计模式中看到了适配器类的以下结构。 (以下代码示例是从维基百科中提取的)
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());
}
}
上面的适配器类是否按照适配器设计模式的指导原则编写?
谢谢。
答案 0 :(得分:2)
适配器的目的是能够将对象视为其他类的实例
在您提供的示例中,只需使用ClassA
StringProvider
的{{1}}类型为new ClassAFormat1(a)
,a
的实例就可以“处理”为ClassA
。
根据您添加的更改,您无法使用ClassA
的不同实例,并使其行为为StringProvider
。在这种情况下,ClassAFormat1
不能用作ClassA
到StringProvider
的适配器(因为您无法为其提供ClassA
的任何实例,并使其行为类似{ {1}}。