采用以下代码(非常类似于我正在尝试做的事情)。
目录.cs
公共接口 IDirectory { 字符串 FullPath{ 得到;} }
目录树.cs
公共类目录树 { 私人目录_root; ... 公共 IDirectory GetRoot(){...}; 私有类目录:IDirectory { ... } }
我想为使用这个库的其他类提供一种访问目录信息的方法,但是以“不可变”的方式,所以只能在接口中使用“get”函数。在内部,比如说,一个目录被重命名(FileSystemWatcher),我可以用一个设置器更新目录名称字段,但只能从 DirectoryTree 或 Directory 类内部。事件可以注册到 DirectoryTree 以得到更改通知。
接口似乎对此最有意义,但我缺乏经验。我一直认为接口只是让与不同类的相似部分交互变得容易,但我还没有看到人们使用它们来“保护”类的部分免受外界影响的任何例子。这也让我想知道我是否打破了封装?接口是解决此问题的可取方法吗?