2011-01-15 5 views
6

OOPでは、用語委任が挙げられます。これはクラスでどのようにモデル化されていますか? yahooなどで検索しましたが、代理人へのリンクがあります。基礎となるEngineにこの例では代表団とは何ですか?いつ私はそれを使いたいですか?

public class Car { 
    private Engine engine = new Engine(); //or inject it externally 

    public void start() { 
     engine.start(); 
    } 
} 

Car代表者:

答えて

20

あなたは、クラスCarEngineを持っている想像してみてください。車のユーザーはエンジンを直接起動することはできません(メカニックでない場合)。しかし、彼は車を始めると言うことができ、車はエンジンが始動するように指示します。

オブジェクト合成を使用し、作成オブジェクトの1つのメソッドを使用する必要がある場合はいつでもこのオブジェクトを使用することをお勧めします。その場合、それを委譲するメソッドを作成します。

+1

+1これを拡張します。継承は、親に暗黙のうちに委任も行います。上記の説明は明示的な委任です。 – jer

+0

@jer継承は委任をしないと思います。委任は他のオブジェクトへの責任を扱っています。他のオブジェクトは、同じクラスであっても、まったく異なるクラスであってもよい。継承の場合、すべてのオブジェクトは同じメソッドセットを共有します。 – nktsg

関連する問題