Model view controller GEF:如何使用预定义的第三方模型将域信息与表示信息分离?

Model view controller GEF:如何使用预定义的第三方模型将域信息与表示信息分离?,model-view-controller,view,model,eclipse-rcp,eclipse-gef,Model View Controller,View,Model,Eclipse Rcp,Eclipse Gef,我正在开发一个GEF视图(稍后将演变为GEF编辑器),我是在 在本书的第8.1章(“GEF模型”)中,构建了一个模型,该模型混合了领域信息和表示信息(这一点得到了广泛承认):generalogyElement是其余模型对象(但只有一个)的抽象超类 generalogyElement负责位置及其子类(Person,Marriage)等的位置更改,这些子类本身包括实际的域信息。顺便说一句,源代码可以在上找到 我不介意自己这样做(即使这可能是“糟糕的风格”),但我使用的是一个第三方模型,我不能修改它,

我正在开发一个GEF
视图
(稍后将演变为GEF
编辑器
),我是在

在本书的第8.1章(“GEF模型”)中,构建了一个模型,该模型混合了领域信息和表示信息(这一点得到了广泛承认):
generalogyElement
是其余模型对象(但只有一个)的
抽象
超类

generalogyElement
负责位置及其子类(
Person
Marriage
)等的位置更改,这些子类本身包括实际的域信息。顺便说一句,源代码可以在上找到

我不介意自己这样做(即使这可能是“糟糕的风格”),但我使用的是一个第三方模型,我不能修改它,也就是说,我不能将类
ThirdPartyNode
更改为扩展,比如说,
examplelement

一种选择当然是针对第三方编写我自己的模型,创建一个
抽象
ExampleElement
,并让一个新类
ExampleNode
扩展
ExampleElement
ThirdPartyNode
。我可能会这样做,但我真的希望首先包括不同的可能性,因为创建另一个模型需要大量的输入,而且可能是多余的(不是吗?)

我如何区分这两种信息类型


提前谢谢

我解决了一个类似的问题,创建了一个包含表示数据(即:元素的位置)和对实际数据模型的引用的不同模型。
您只需仔细考虑数据模型如何通知编辑器的更改。 谢谢!你能给我一个创建这样一个模型的起点吗?一些基本代码或类/方法示例?那太好了。你的回答证实了我关于解决这个问题的基本想法,但是——特别是在“参考实际数据模型”的情况下——我不知道如何开始。你可以看看ecore模型编辑器:你可以在ecore工具库中找到它