我对代码完整书中的一段感到有些困惑。
在“要避免的类”部分中,它写道:
“避免以动词命名的类只有行为但没有数据的类通常不是真正的类。考虑将像 DatabaseInitialization() 或 StringBuilder() 这样的类变成其他类的例程”
我的代码主要由没有数据的动词类组成。有 invoicereaders、pricecalculators、messagebuilders 等。我这样做是为了将课程集中到每个任务上。然后我将依赖项添加到其他类以获得其他功能。
如果我正确理解该段落,我应该使用类似的代码
class Webservice : IInvoiceReader, IArticleReader {
public IList<Invoice> GetInvoices();
public IList<Article> GetArticles();
}
而不是
class InvoiceReader : IInvoiceReader {
public InvoiceReader(IDataProvider dataProvider);
public IList<Invoice> GetInvoices();
}
class ArticleReader : IArticleReader {
public ArticleReader(IDataProvider dataProvider);
public IList<Article> GetArticles();
}
编辑 感谢所有回复。
我的结论是,我当前的代码比 OO 更具 SRP,但它也受到“贫血域模型”的影响。
我相信这些见解将来会对我有所帮助。