Tree 我需要一个构建对象树的模式
我有一些C代码,可以构建多态对象树。根据类型,对象可能有0-7个子对象。现在,对象的构造函数什么都不做,我使用递归辅助函数构造整个对象树:Tree 我需要一个构建对象树的模式,tree,design-patterns,Tree,Design Patterns,我有一些C代码,可以构建多态对象树。根据类型,对象可能有0-7个子对象。现在,对象的构造函数什么都不做,我使用递归辅助函数构造整个对象树: // pseudocode void BuildTree(Node root) { if(root is A) { root.a_data = ... root.a_child = GenerateNewNode(some_constraints); BuildTree(root.a_child)
// pseudocode
void BuildTree(Node root) {
if(root is A) {
root.a_data = ...
root.a_child = GenerateNewNode(some_constraints);
BuildTree(root.a_child)
} else if(root is B) {
// same stuff, for B. Note B may have different chldren, etc
}
}
这一切似乎真的不雅观,所以基本上我在寻找一种模式,可以帮助我在这里。BuildTree函数似乎是某种策略,我希望将来能够使用不同的策略
哦,另一个复杂的因素。BuildTree中有一些东西是以BuildTree之前所做的事情为条件的。例如,如果我曾经生成过B,那么我需要对C节点执行XYZ。或者,如果我当前正在生成A的子节点,那么就不要生成D。听起来您需要在每个节点上粘贴一个多态方法,以便每个节点都能够构建自己
public class Node
{
public virtual BuildNode(IBuildStrategy strategy)
{
}
}
这样你就可以打电话了
root.BuildNode(new InitialNodeBuildingStrategy());
在子树中仍然允许自定义策略的情况下填充树。您尝试过factree模式吗?哈哈哈。很抱歉