首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java- Adapter设计模式实现变体

Java- Adapter设计模式实现变体
EN

Stack Overflow用户
提问于 2013-04-13 14:03:30
回答 1查看 513关注 0票数 1

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

代码语言:javascript
运行
复制
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类,我对上面的代码做了一个小小的调整。我知道这很奇怪,但我想知道它是否仍然属于适配器设计模式。

代码语言:javascript
运行
复制
public class ClassAFormat1 implements StringProvider {



    public String getStringData() {

               ClassA classA = new ClassA();
        return format(classA.toString());
    }
}

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-04-13 14:13:28

适配器的用途是能够像对待其他类的实例一样对待对象。

在您提供的示例中,只需使用new ClassAFormat1(a) (其中a的类型为ClassA ),就可以将ClassA的实例“视为”ClassA

使用添加的更改,您不能采用不同的ClassA实例并使它们的行为像StringProvider一样。在这种情况下,ClassAFormat1不能用作从ClassAStringProvider的适配器(从某种意义上说,您不能为它提供任何ClassA实例并使其行为类似于StringProvider

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15984802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档