考虑下面的简化类:

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事件需要在全局级别订阅。

07-24 18:43