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

时间:2013-04-13 06:03:30

标签: java design-patterns adapter

我是设计模式主题领域的新手,并且热衷于理解设计模式的实现变化。在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());
    }
}

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

谢谢。

1 个答案:

答案 0 :(得分:2)

适配器的目的是能够将对象视为其他类的实例 在您提供的示例中,只需使用ClassA StringProvider的{​​{1}}类型为new ClassAFormat1(a)a的实例就可以“处理”为ClassA

根据您添加的更改,您无法使用ClassA的不同实例,并使其行为为StringProvider。在这种情况下,ClassAFormat1不能用作ClassAStringProvider的适配器(因为您无法为其提供ClassA的任何实例,并使其行为类似{ {1}}。