Eclipse适配器工厂实现

时间:2015-09-05 15:12:29

标签: design-patterns eclipse-plugin eclipse-rcp adapter

我是Eclipse Adapter概念的新手。但是我确实在Eclipse RCP方面有一些经验。

我在互联网上搜索了解Eclipse Adapter模式的想法。 我认为它将一个对象转换为另一个对象。特别是我的理解是, 如果我们检查对象引用(Adapter和Adaptable)它将是相同的(我的理解,请纠正我,如果我错了。)。 我在互联网上看到一篇将Apple转换为Orange的文章。

https://dzone.com/articles/eclipse-adapters-hand-hand-hol

它不包含完整的源代码。所以我开始以自己的方式实施。 我陷入了AdaptorFactory类的getAdapter(Object adaptableObject, Class<T> adapterType)方法。 我很困惑实现getAdapter(adaptable,adapter)方法。

1 个答案:

答案 0 :(得分:1)

getAdapter通常不用于创建新对象。相反,它用于访问源对象包含的一些现有对象。

源对象通常是一个用户界面对象 - 可能是树结构的节点,而请求的类型就像节点所代表的文件。

public class TreeNodeFactory implements IAdapterFactory {

    private static final Class<?>[] adapterList = { IFile.class };

    @Override
    public <T> T getAdapter(Object sourceObject, Class<T> adapterType) {
        if (adapterType == IFile.class) {
            if (sourceObject instanceof TreeNode) {
                return (T) ((TreeNode)sourceObject).getFile();
            }
        }
        return null;
    }

    @Override
    public Class<?>[] getAdapterList() {
        return adapterList;
    }
}

请注意,我在这里调用TreeNode.getFile方法,该方法将返回节点所代表的IFile

使用getAdapter表示调用代码不需要了解TreeNode的任何内容,它只需要IFile