2011-01-15 22 views

Respuesta

20

Imagine que tiene las clases Car y Engine:

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

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

En este ejemplo, los delegados a la CarEngine subyacente. El usuario del automóvil no puede encender el motor directamente (a menos que sea un mecánico). Pero puede decirle al auto que arranque, y el auto le dice al motor que arranque.

Lo deseará utilizar siempre que utilice la composición de objetos y necesite utilizar un método de uno de los objetos de composición. En ese caso, crea un método que le delegue.

+1

+1 Para ampliar esto. La herencia también delega, implícitamente al padre (s). Lo que describes arriba es una delegación explícita. – jer

+0

@jer Creo que la herencia no hace delegación. La delegación está manejando la responsabilidad hacia algún otro objeto. El otro objeto puede ser de la misma clase o una clase totalmente diferente. Mientras que en el caso de la herencia, cada objeto comparte el mismo conjunto de métodos. – nktsg

Cuestiones relacionadas