抱歉,“合成层次结构”不是问题,但我将在问题中解释我的意思。
没有任何OO程序员没有遇到过“保持继承层次结构平坦”或“优先考虑继承而不是继承”等变体。但是,深层次的组合层次结构似乎也存在问题。
假设我们需要一组详细说明实验结果的报告:
class Model {
// ... interface
Array<Result> m_results;
}
每个结果都有某些属性。其中包括实验时间以及实验各个阶段的一些元数据:
enum Stage {
Pre = 1,
Post
};
class Result {
// ... interface
Epoch m_epoch;
Map<Stage, ExperimentModules> m_modules;
}
好,很好。现在,每个实验模块都有一个描述实验结果的字符串,以及对实验样本集的引用的集合:
class ExperimentalModules {
// ... interface
String m_reportText;
Array<Sample> m_entities;
}
然后每个样本都有...好,您得到了图片。
问题是,如果我要在应用程序域中对对象建模,这似乎是很自然的选择,但是最终,a Result
只是一个愚蠢的数据容器!为它创建大量的类似乎并不值得。
假设上面显示的数据结构和类正确地对应用程序域中的关系建模,是否有更好的方法可以对这种“结果”进行建模,而无需求助于深层次的构成层次结构?是否有任何外部环境可以帮助您确定这种设计是否是好的?