¿En qué se diferencia el tipeo de patos del tipo y / o las interfaces 'variantes' antiguas?

Sigo viendo la frase "mecanografiar patos", e incluso me encontré con un ejemplo de código o dos. Yo soy demasiadoperezoso ocupado para hacer mi propia investigación, alguien puede decirme brevemente:

la diferencia entre un "tipo de pato" y un "tipo de variante" antiguo, yproporcionar un ejemplo de dónde podría preferir la escritura de pato sobre la escritura de variantes, ydar un ejemplo de algo que lo haríatener utilizar la escritura de pato para lograr?

No pretendo parecer gallina al dudar del poder de esta 'nueva' construcción, y no estoy esquivando el problema al negarme a hacer la investigación, pero estoy riendo a carcajadas por todo el bombo que he estado viendo sobre Últimamente. Parece queNo mecanografía (también conocido como mecanografía dinámica), así que no veo las ventajas de inmediato.

ADENDA: Gracias por los ejemplos hasta ahora. Me parece que usar algo como 'O-> can (Blah)' es equivalente a hacer una búsqueda de reflexión (que probablemente no sea barata), y / o es lo mismo que decir (O es IBlah) que el compilador podría puedo comprobarlo, pero este último tiene la ventaja de distinguir mi interfaz IBlah de su interfaz IBlah mientras que los otros dos no. De acuerdo, tener muchas interfaces pequeñas flotando para cada método se volvería desordenado, pero de nuevo, también puede verificar muchos métodos individuales ...

... así que de nuevo no lo entiendo. ¿Es un ahorro de tiempo fantástico, o lo mismo de siempre en un saco nuevo? ¿Dónde está el ejemplo querequiere pato escribiendo?

Respuestas a la pregunta(10)

Su respuesta a la pregunta