我有这个类,它创建一个文档并保存它:
public class DocCreator
{
private IDocumentStore _documentStore;
public DocCreator(IDocumentStore documentStore)
{
_documentStore = documentStore;
}
public void CreateAndSave()
{
var doc = new Document();
doc.Title = "this is a title";
doc.Content = whateverStream;
doc.Hash = CalculateHash(doc.Content);
//[do more things to create a doc]
_documentStore.PersistToDisk(doc);
}
}
我认为这很不错,因为保存东西的代码隐藏在DocumentStore
. 但我们可以更进一步,移除_documentStore.PersistToDisk(doc);
对另一个类的调用,如下所示:
public class DocCreatorWorkflow
{
private IDocumentStore _documentStore;
public DocCreatorWorkflow(IDocumentStore documentStore)
{
_documentStore = documentStore;
}
public void CreateAndSave()
{
var docCreator = new DocCreator();
var doc = docCreator.Create();
_documentStore.PersistToDisk(doc);
}
}
在上面的示例中,我创建了另一个类,它调用两个lower
类,因此负责“工作流”。它可能更干净,但它也使事情变得更加复杂。不是吗?
还是我应该总是选择第二种选择?