【发布时间】:2009-01-19 21:38:54
【问题描述】:
应用有一个 Foo 类,它是一个具体类,所有业务逻辑和行为都已正确定义。
也就是说,我们需要获取保存在此应用中的所有 Foo 的集合。
这个“IEnumerable GetFoos()”方法应该放在哪里?
不在 Foo 类本身,对吗?
【问题讨论】:
标签: design-patterns oop
应用有一个 Foo 类,它是一个具体类,所有业务逻辑和行为都已正确定义。
也就是说,我们需要获取保存在此应用中的所有 Foo 的集合。
这个“IEnumerable GetFoos()”方法应该放在哪里?
不在 Foo 类本身,对吗?
【问题讨论】:
标签: design-patterns oop
您将需要一个从 CollectionBase 派生的 Foos 类或类似的类来公开您的 Foo 类的实例。
【讨论】:
要遵守 SOLID 原则,您应该考虑 Foo 类的真正目的。由于我不知道 Foo 的实施细节和内部运作,我不能说太多。但是这样的设计不是更传统吗?
class Foo
{
IPersistancePresenter persistancePresenter;
public Foo(IPersistancePresenter persistancePresenter)
{
persistancePresenter = persistancePresenter;
}
}
interface IPersistancePresenter <T>
{
IList<T> GetInstancesOf<T>();
}
Foo 不会改变(因为它不应该是 Foo 的责任)如果以后会有另一个类而不是 Foo,它必须被持久化并在运行时收集实例。
【讨论】: