Eclipse 适配器工厂实现

Eclipse adapter factory implementation

我是 Eclipse 适配器概念的新手。但是我确实有一些 Eclipse RCP 的经验。

我在互联网上搜索以了解有关 Eclipse 适配器模式的想法。 我想到它将一个对象转换为另一个对象。特别是我理解的是, 如果我们同时检查对象引用(Adapter 和 Adaptable),它将是相同的(我的理解,如果我错了请纠正我。)。 我在网上看到一篇文章说把苹果改成橙子。

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

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

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 方法,该方法将 return 节点代表的 IFile

使用getAdapter意味着调用代码不需要知道任何关于TreeNode的信息,它可以只要求一个IFile.