多くの異なる設計パターンについて読んだ後、現在のプロジェクトについて質問を受けました。誰かが私を助けてくれることを願っています.
私のプロジェクトは、さまざまなユーザー ファイルを入力として受け取り、それらを簡単に使用できるようにオブジェクトのリポジトリに変換します。
例えば:
Userfile A with the content:
"id:a" - "value1:contentA1" - "value2:contentB1"
"id:b" - "value1:contentA2" - "value2:contentB2"
"id:c" - "value1:contentA3" - "value2:contentB3"
このファイルをオブジェクトに解析するための 2 つの異なるアプローチが表示されます (どちらが優れていますか?)。
1)
エンティティ クラスを取得しました。
public class UserContent
{
public int ID { get; set; }
public string Value1 { get; set; }
public string Value2 { get; set; }
}
ユーザーファイルの行を取得し、それをオブジェクトに解析するサービス:
public class UserContentParser
{
public UserContent ParseUserContent(string content)
{
// ...
// splitting the content
// ...
return new UserContent
{
ID = id,
Value1 = value1,
Value2 = value2
};
}
}
ParseController:
public class ParseController
{
private Repository _repository = new Repository();
private UserContentParser _userContentParser = new UserContentParser();
public Repository StartParsing(File userFile)
{
// ...
// reading file
// ...
foreach(var contentLine in userFileContent)
{
_repository.AddUserContent(_userContentParser.ParseUserContent(contentLine));
}
}
}
私が見る他のアプローチは次のとおりです。
2) このアプローチは、2 つのクラス (サービス クラスなし) で構成されています。
public class UserContent
{
public UserContent(string content)
{
// ...
// splitting the content
// ...
ID = id;
Value1 = value1;
Value2 = value2;
}
public int ID { get; set; }
public string Value1 { get; set; }
public string Value2 { get; set; }
}
public class ParseController
{
private Repository _repository = new Repository();
private UserContentParser _userContentParser = new UserContentParser();
public Repository StartParsing(File userFile)
{
// ...
// reading file
// ...
foreach(var contentLine in userFileContent)
{
_repository.NewUserContent(contentLine);
// in this method the repository creates the
// new UserContent(contentLine)
}
}
}
プロジェクトには、含まれているオブジェクトを操作するためにリポジトリへの参照を取得するプラグインもいくつか含まれています。
ここではどのアプローチが良いですか?おそらくより良い代替手段はありますか?また、ユーザー コンテンツを解析するために他の依存関係が必要な場合はどうなるでしょうか? エンティティがサービスに依存していても問題ありませんか、それともエンティティ オブジェクトに依存関係がない方がよいですか? もう 1 つ質問がありますが、UserContent クラスはユーザー コンテンツを解析して他のプラグインに渡すために使用されるため、DTO ですか?
誰かが私の多くの質問を手伝ってくれることを願っています.
よろしく、ゲリット