パーサーを作成しているとしましょう。1つの実装は次のようになります。
public sealed class Parser1
{
public string Parse(string text)
{
...
}
}
または、代わりにテキストをコンストラクタに渡すこともできます。
public sealed class Parser2
{
public Parser2(string text)
{
this.text = text;
}
public string Parse()
{
...
}
}
どちらの場合も使用法は簡単ですが、他のものと比較して、へのパラメーター入力を有効にするとはどういう意味Parser1
ですか?他のプログラマーがAPIを見たときに、どのメッセージを送信しましたか?また、特定の場合に技術的な利点/欠点はありますか?
2番目の実装ではインターフェイスがまったく意味がないことに気づくと、別の質問が出てきます。
public interface IParser
{
string Parse();
}
...最初のインターフェイスが少なくともいくつかの目的に役立つ場合。これは特に、クラスが「インターフェース可能」かどうかを示していますか?