我们,每一个节点从节点基类public Node(INodeFactory nodeFactory)
工厂注入使节点可以使用Get(int id)
如果一个工厂总是创建一个新的对象
在稍后的时刻创建其子节点派生的层次结构一些节点需要引用结构中的另一个节点。获取引用所需的信息可能会在运行时更改,并且在构建节点对象时不一定可用。基本上这种方法签名看起来是相同的,并且是Get(int id)
。这次不应该创建新的对象,而应该返回现有的对象。
我们的第一次尝试是通过INodeLocator
来搜索节点。首先,我们不确定'定位器'是一个好名字,如果我们在这里错过了一些模式,可能是存储库模式(但只是查找?)。其次,我们注意到方法签名是相同的。
在创建初始树之后,我们正在考虑将工厂从“创建”切换到“查找”模式,但由于稍后还需要创建节点,因此这种模式不起作用。
对于“定位器”逻辑,我们正在考虑通过节点搜索(迭代),但也许最好在平面字典中跟踪它们。但随后出现的问题是工厂可以添加到字典中,但不管理寿命。节点被删除时应该发生什么。
我们如何以适当的方式设计这个问题?
这是不正确的地方为您的问题切换到softwareengineering.stackexchange.com –
在阅读https://meta.stackoverflow.com/questions/254570/choosing-between-stack-overflow-and-software-engineering我认为你可能是对的。我从来没有在那里发布。这个应该删除吗? –
我认为它应该被删除。即使这是一个很好的问题,并且如果您查看softwareengineering.stackexchange.com,您也没有关闭选项 –