質問

その代わり、このようなインターフェイスを使用してのます:

public interface IStartable
{
    void Start();
    void Stop();
}

私は通常ちょうどオブジェクトのコンストラクターがスタート()のコードを実行させる、とDisposeメソッドは、停止()のコードを実行されるようにIDisposableインターを実装します。

これは、スタイルだけの問題ですか?それとも私がIStartableのようなものを持っていないことにより、重要な何かが足りないのですか?あなたはそれが始まっています維持しなければならないので、私が見るすべては、余分な複雑さ/停止状態。

スタートを使用しての長所と短所は、特にのIoC / DIコンテナのコンテキストで、/処分/ ctorのを使用して対中止を教えてください。

の編集:グレート答えは、あなたが始動可能なオブジェクトのためのインタフェースを使用するように私を納得させてきました。私は答えはので、私は24時間後に最もアップ票を持っている人は誰でも受け入れるだろうがベストです誰かを決定することはできません。

役に立ちましたか?

解決

インタフェースを使用する一般的な利点は、彼らが自己記述と自己宣伝しているということです。何のインタフェースがない場合、あなたは、オブジェクトを依頼する方法がありません「あなたが開始と停止することができますか?」あなたがインターフェイスを使用する場合は、対照的に、あなたは、メッセージのこれらの種類に対応させていただきますそれらのかを確認するためにオブジェクトを照会することができます。そして、あなたは安全にそのようなオブジェクトは、インタフェースによってカプセル化機能を実装していることを保証することができます。

他のヒント

一般的に、コンストラクタが適切に初期化されたオブジェクトを生成しなければならない

と何よりも!

これはおそらくあなたがスタート()を言うとき具体的には、あなたが起こっされるように何を意味するか、依存性があります。しかし、一般的には、(特にステートフルおよび/または長時間実行実行!)ルーチン実行して、オブジェクトの初期化を混合してのSoCに違反しますのます。

また、あいまいさの多くを残します。消費者に、指定されたオブジェクトのためにどのように我々はctorのを起動するとき、それは「開始」されて知っているのですか? 「何の契約を実装していないこの特定のオブジェクトについては、私はそれはそれは私の期待に準拠して、著者にご希望に残しておく必要がありますか」?インタフェースは、明示的なアクションの存在および可用性を行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top