给定方案的适当模式

时间:2012-04-08 14:14:12

标签: c# .net design-patterns hierarchy

我正在通过以下实体存在的服务开发.NET包装器:

  • 属性名称,文件,文件夹,项目
  • 项目属性名称,方法创建,重命名,删除
  • 文件属性名称,方法创建,重命名,删除
  • 文件夹属性名称,文件,文件夹,方法创建,重命名,删除

如您所见,Root entitiy(单身)可以容纳一些文件,文件夹和项目。项目只能由Root保存,不能出现在任何文件夹中。另一方面,文件和文件夹可以由Root和Folder实体进行操作。

我试图找出将此场景投影到代码中的最佳方法。

Service.Root将是一个单身人士的财产,可能没有更多。

Service.Root.Files& Service.Root.Folders - 我应该为此目的制作文件和文件夹类的自定义集合吗?如果是的话,我是否应该只通过这些集合上的方法创建文件和文件夹类的新实例?或者我应该允许开发人员通过为它创建一个公共构造函数来创建文件/文件夹而不显式引用服务?我猜不会?因为例如重命名文件调用与网络一起使用的服务上的方法。因此,File,Item&的每个实例都应如此。文件夹引用了服务?

这个问题可能非常混乱,但我不太清楚如何解释,我很抱歉。通常,我会询问自定义文件/项目/文件夹类型的收集是否是个好主意,或者它是否更好地公开通用集合。此外,如果您知道我的意思,这些公开的集合是否应该是只读的并通过调用Service.CreateNewFile()而不是Service.Folders [0] .Add(New File())来创建新文件。

感谢任何讨论此类开发模式的efford和/或良好链接。

亚伦

1 个答案:

答案 0 :(得分:0)

您可以使用两者来实现目标。将集合公开为属性将为用户提供最灵活和熟悉的界面。但是,对集合进行更多控制,将它们作为只读属性公开,然后提供添加,删除等方法,将为您提供更多控件。这可能会导致更少的问题,因为只有通过有限的界面才能访问集合。 因此,您的权衡是灵活性与控制权之间的权衡。这两种方法都有效。