我是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)方法。
答案 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
。