在存在以下实体的服务上,我正在开发.NET包装器:
如您所见,根实体(即单例)可以保存一些文件、文件夹和项。项只能由根保存,不能存在于任何文件夹中。另一方面,文件和文件夹可以由根实体和文件夹实体帮助。
我正试图找出将这个场景投影到代码中的最佳方法。
Service.Root将是一个单独的属性,它可能没有更多。
Service.Root.Files & Service.Root.Folders -我应该为此目的定制文件和文件夹类的集合吗?如果是的话,我应该只通过这些集合上的方法来创建File和文件夹类的新实例吗?或者我应该允许开发人员通过为服务创建一个公共构造函数来创建文件/文件夹而不显着地引用服务?我想不是吧?因为,例如,在与网络一起工作的Service上重命名文件调用方法。那么,文件、项和文件夹的每个实例都应该引用服务吗?
这个问题可能很麻烦,但我不知道该怎么解释,对不起。通常,我想问的是,创建文件/项/文件夹类型的自定义集合是个好主意,还是公开泛型集合更好。此外,如果您知道我的意思,那么这些公开的集合是否应该是只读的,并通过调用Service.CreateNewFile()而不是Service.Folders.Add(New ())来创建新文件。
感谢任何讨论这种开发模式的efford和/或良好链接。
Aaron
发布于 2012-04-08 19:17:19
你可以利用两者中的一点来实现你的目标。将集合公开为属性将为用户提供最灵活和最熟悉的界面。但是,对集合进行更多的控制,将它们公开为只读属性,然后提供添加、删除等方法,将给您类设计器更多的控制。这可能会导致更少的问题,因为对集合的访问只能通过有限的接口进行。因此,你的权衡是一种灵活性和控制力.这两种方法都会奏效。
https://stackoverflow.com/questions/10063444
复制相似问题