考虑下面的简化类:
class Book {
string title;
Author author;
}
很简单。但是,当添加类似
getBookFromDatabase(int bookId)
的方法时,应将它作为static
方法放在同一类中,还是放在单独的(即)BookManager
类中?用法示例:
Book b = Book.getBookFromDatabase(42);
与
Book b = BookManager.getBookFromDatabase(42);
我确实意识到这在某种程度上是一个品味问题,但是遵循OOP准则的最佳选择是什么?
最佳答案
我个人喜欢“ Manager
”类方法。它分离了逻辑,因此Book
不必了解如何获取自身。另外,这里的BookManager
可以是单例-直到实际需要获取Book
时才实例化。
此外,BookManager
可以执行额外的簿记任务(不需要双关语),例如缓存,或者可能有一些Book
事件需要在全局级别订阅。