在哪里放置GetObject集合方法?

时间:2009-01-19 21:38:54

标签: design-patterns oop

一个应用程序有一个Foo类,它是一个具有正确定义的所有业务逻辑和行为的具体类。

也就是说,需要获得此应用程序中持久保存的所有Foos的集合。

这个“IEnumerable GetFoos()”方法应该放在哪里?

不是在Foo类本身,对吧?

2 个答案:

答案 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,那么必须持久化并在运行时收集实例。