这是我的问题,我希望我能正确地写出来,因为这是一个精确的问题。
我想知道如何将接口用作两个模块之间的合同。当我绘制模块图时,我永远不知道哪个模块是圆圈,哪个模块是半开的圆圈。关于如何区分的明确方法将不胜感激!
我不想要关于如何使用接口的示例,因为我知道接口的属性(行为等)。
假设我有 2 个模块,一个包含业务逻辑,所以我将其称为“模型”,另一个包含 GUI,因此我将其称为“视图”。
该视图在每个节点上都需要一个 Treeview 和一个 Matrix。所以我们得到了一个模型知道的树状层次结构,并且对于每个节点,我们想要填充一个值矩阵。
root
- node1
-- leaf1
-- leaf2
- node2
- node3
-- leaf3
-- leaf4
我的直觉告诉我,我应该做这样的事情:
interface IModelHierarchicMatrix {
void setTreeViewValues(TreeViewModel treeview);
void getMatrixValues();
void setMatrixValues(int[] values);
}
class Model implements IModelHierarchicMatrix {
// the code where I override the interface's function
}
太好了,我们可以在模型中调用 GUI 所需的函数。但是我们如何告诉 GUI 的类我们需要那种行为(类等)......我发现自己经常做这种事情:
interface IModelHierarchicMatrixGlue {
void acceptModel(IModelHierarchicMatrix model);
}
class Gui implements IModelHierarchicMatrixGlue {
private IModelHierarchicMatrix model;
...
@Override
public void acceptModel(IModelHierarchicMatrix model) {
if (this.model == null) {
this.model = model;
}
}
}
但我总是想知道这是否是在模型和视图之间创建契约的好方法。如果我必须在模块之间创建双向合同,我应该怎么做?因为它可能会在接口之间创建循环逻辑......
我希望我的问题足够清楚,在此先感谢。