【问题标题】:Java- Adapter design pattern implmentation variationsJava-适配器设计模式实现变体
【发布时间】:2013-04-13 06:03:29
【问题描述】:

我是设计模式主题领域的新手,并且热衷于了解设计模式的实现变体。我在网络上的众多教程中看到了适配器设计模式中适配器类的以下结构。 (以下代码示例摘自维基百科)

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());
    }
}

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

谢谢。

【问题讨论】:

标签: java design-patterns adapter


【解决方案1】:

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

通过您添加的更改,您无法获取 ClassA 的不同实例并使它们的行为与 StringProvider 相同。在这种情况下,ClassAFormat1 不能用作从ClassAStringProvider 的适配器(因为你不能给它任何ClassA 的实例并使其表现得像StringProvider

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多