假设我有如下基本界面:
public interface IObjectProvider
{
IEnumerable<IObject> GetObjects();
}
您将如何重组此接口以提供此功能?我希望结果能够用于应用程序中的许多“提供者”接口,以实现良好的设计一致性。
示例:以下内容以简洁易懂的方式提供了此功能,但添加了显著的耦合(包括在.NET 4.0之前的代码中对WPF程序集的引用)。既然我们知道一旦代码进入.NET4.0,它就会自动变得“更轻”,那么我是否应该使用它呢?
public interface IObjectProvider
{
ReadOnlyObservableCollection<IObject> Objects
{
get;
}
}
编辑1:
根据里德的回答,我倾向于离开学校
IObjectProvider
接口未更改,原因如下:
-
-
声明对于所有提供程序,如果提供程序支持提供的集合已更改的通知,则
GetObjects()
必将实施
INotifyCollectionChanged
在我的设计中,还有另外两种情况需要考虑:
-
提供的集合从未更改。
-
提供的集合可能会更改,但客户端需要轮询是否需要更新。