首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API设计:如何指定任意树?

API设计:如何指定任意树?
EN

Software Engineering用户
提问于 2016-07-08 18:02:06
回答 1查看 270关注 0票数 3

我正在编写一个API,其中一个函数调用意味着调用一系列树节点的工厂,这些树节点接受许多参数,其中一些参数是相同的,有些参数是不同的。关键在于,用户需要指定树的确切结构--算法上这样做将与我试图提供的内容背道而驰。我的问题是,构造函数调用的最佳(最直观的)方式是什么?到目前为止,我最好的想法是:

代码语言:javascript
复制
void FooClass::createTree(
    {
        {2},
        {4, 5},
        {2, 2, 2, 2, 2, 2, 2, 2, 0}
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
    },
    {
        {"N1"},
        {"N2-1", "N2-2"},
        {"N3-1", "N3-2", "N3-3", "N3-4", "N3-5", "N3-6", "N3-7", "N3-8", "N3-9"},
        {"N4-1", "N4-2", "N4-3", "N4-4", "N4-5", "N4-6", "N4-7", "N4-8", "N4-9", "N4-10", "N4-11", "N4-12", "N4-13", "N4-14", "N4-15", "N4-16"}
    },
    other_args...
)

很明显,0意味着某个分支的终止。它是在C++中构建的,它是作为库函数的一部分提供的,在库函数中,FooClass在内部使用树。

我意识到,最终,对于不同的参数组合,我需要不同的调用,但我遇到的是“基本情况”格式。我还想避免使用Builder对象(正如建议的那样),因为最终由用户指定的树必须从下向上构造(这是问题域的结果--这是不可避免的约束)。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-07-09 05:27:30

毕竟,我决定使用一个简单的生成器对象。这个惯用的调用看起来有点像这样:

代码语言:javascript
复制
FooClass.createTree(
    TreeBuilder("N1")
        .addSubNodes("N1", {"N2-1", "N2-2"})
        .addSubNodes("N2-1", {"N3-1", "N3-2", "N3-3"})
        .addSubNodes("N2-2", {"N3-4", "N3-5"}),
    other_args...
);
票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/324384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档