考虑以下简化的类:
class Book {
string title;
Author author;
}
很简单。但是,当添加像 getBookFromDatabase(int bookId)
这样的方法时,是否应该将其作为 static
方法放在同一个类中,或者 而不是在单独的(即)BookManager
-类?
使用示例:
Book b = Book.getBookFromDatabase(42);
对比
Book b = BookManager.getBookFromDatabase(42);
我确实意识到这在某种程度上是一个品味问题,但是遵循 OOP 指南的最佳选择是什么?
最佳答案
我更喜欢使用 Repository
从后备存储中重新组合对象。像下面这样的东西可能是一个很好的起点。
public interface IBookRepository{
Book Load(int id);
void Save(Book book);
}
通过这种方式,您可以拥有多个不同的存储库实现,而不必依赖于使用数据库。例如,您可能有一个可用于测试的 InMemoryBookRepository
和一个用于类似生产环境的 DatabaseBookRepository
。
在风格上我也会避免使用像这样的静态方法:
BookManager.getBookFromDatabase(42);
它更难测试并且生成的代码更紧密地耦合在一起,这将使测试和更改变得更加困难。
你可以看看这个StackOverflow question在哪里可以了解有关实现存储库的更多信息。 Microsoft和 Martin Fowler还对其进行了更详细的描述。
关于c# - 是否放置方法来检索与单独类中的类相关的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13788339/