一个应用程序有一个Foo类,它是一个具有正确定义的所有业务逻辑和行为的具体类。
也就是说,需要获得此应用程序中持久保存的所有Foos的集合。
这个“IEnumerable GetFoos()”方法应该放在哪里?
不是在Foo类本身,对吧?
答案 0 :(得分:1)
您将需要一个派生自CollectionBase或类似的Foos类来公开您的Foo类的实例。
答案 1 :(得分:0)
要遵守SOLID原则,您应该考虑Foo类的真正目的。由于我不知道Foo的实施细节和内部运作,我不能说太多。但这种设计不是更传统吗?
class Foo
{
IPersistancePresenter persistancePresenter;
public Foo(IPersistancePresenter persistancePresenter)
{
persistancePresenter = persistancePresenter;
}
}
interface IPersistancePresenter <T>
{
IList<T> GetInstancesOf<T>();
}
Foo不会改变(因为它不应该是Foo的责任)如果稍后会有另一个类而不是Foo,那么必须持久化并在运行时收集实例。