このクラスがあり、ドキュメントを作成して保存します。
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);
}
}
上記の例では、2つのクラスを呼び出す別のクラスを作成lower
したため、「ワークフロー」を担当します。それはよりきれいかもしれませんが、それはまた物事をより複雑にします。そうですね。
または、常に2番目のオプションを選択する必要がありますか?