Sam*_*ell 0 .net design-patterns
假设我有一个如下所示的基本界面:
public interface IObjectProvider
{
IEnumerable<IObject> GetObjects();
}
Run Code Online (Sandbox Code Playgroud)
对象源是可能更新的某个后备存储,并且此接口的实现负责使用该后备存储.现在,我希望此接口的使用者能够在此接口提供的对象集合发生更改时执行操作.您将如何重构此界面以提供此功能?我希望结果可用于应用程序中的许多"提供者"接口,以获得良好的设计一致性.
示例:以下以简明易懂的方式提供此功能,但增加了重要的耦合(包括对.NET 4.0之前的代码中的WPF程序集的引用).我应该只使用它,因为我们知道一旦代码进入.NET 4.0,它将自动"更轻"吗?
public interface IObjectProvider
{
ReadOnlyObservableCollection<IObject> Objects
{
get;
}
}
Run Code Online (Sandbox Code Playgroud)
根据Reed的回答,我倾向于保持IObjectProvider
接口不变,原因如下:
GetObjects()
必然会实现INotifyCollectionChanged
.还有另外两个案例,我仍然需要在我的设计中考虑: