2010-07-20 7 views
49

Me encuentro con desarrolladores de software usando el término de crear Wrappers de otras clases o API o incluso algunos códigos, este es un término usado por experimentados programadores de softwareDónde y cómo se usa el término WRAPPER en la programación, ¿qué ayuda hacer?

Así que cualquier idea de lo que signifiquen;

p. Ej. una simple pregunta; tenemos dos tipos de técnicas de clasificación de la matriz, vamos a crear un contenedor para que

El de arriba es un ejemplo muy sencillo

Respuesta

78

El término 'envoltorio' se tira mucho. Generalmente se usa para describir una clase que contiene una instancia de otra clase, pero que no expone directamente esa instancia. El objetivo principal de la envoltura es proporcionar una forma "diferente" de usar el objeto envuelto (quizás la envoltura proporcione una interfaz más simple o agregue alguna funcionalidad).

La palabra 'envoltura' también se puede usar para describir patrones de diseño clásicos.

Envasar un objeto para proporcionar una interfaz simplificada se describe a menudo como el patrón 'Fachada'. La envoltura es la fachada.

A veces puede tener una clase que se adapte a una interfaz específica, pero no puede cambiar el código para que se ajuste a esa interfaz. Puede crear un contenedor para esa clase que implementa la interfaz, pero que dirige la mayoría de las llamadas al objeto envuelto. Este es el patrón 'Adaptador'. El contenedor es el adaptador.

La instancia que describe, donde tiene dos clases que pueden ordenar ordenamientos utilizando diferentes algoritmos, suena como el patrón de "Estrategia", donde proporciona una forma de realizar una operación en algún objeto, pero el algoritmo utilizado para esa operación puede ser diferente dependiendo de la estructura de ese objeto.

Por ejemplo, uno de sus algoritmos de ordenamiento puede ser ideal para arreglos de longitud inferior a 100, pero el rendimiento puede ser un problema. El otro algoritmo podría ser bueno para arreglos más grandes. Puede crear un 'contenedor' para los dos algoritmos que admite la operación de ordenamiento, pero decide qué algoritmo usar en función de la longitud de la matriz.

La gran mayoría de las envolturas existen para ocultar algún tipo de complejidad.

+4

oh, lo tengo ... Gracias :) una respuesta muy detallada, resolvió mis problemas de envoltura allí :) –

8

Es sólo que escriba algunas fáciles de utilizar código para ocultar las complejidades del código debajo. Es especialmente útil cuando necesita llamar a una API de bajo nivel desde un lenguaje de nivel superior y desea mantener oculto todo el código "feo".

Editar: Puede encontrar más información sobre ella en estos dos artículos wiki: library y function

3

Una envoltura es un código que se crea a nivel interno llamar a algunos API sin cambiar la API actual.

Un ejemplo de esto es el lanzamiento de Facebook de su Facebook C# SDK. El SDK es en realidad un contenedor, ya que solo le permite llamar a su plataforma subyacente sin darle clases y métodos específicos. Por otro lado, Facebook Developer Toolkit es su API completa.

+0

Necesito escribir un programa de C# que cree un archivo de script (el lenguaje de script es específico de un dispositivo de hardware y se llama ' CoraScript'). Hay aproximadamente 50 comandos en CoraScript, p. Ej., uno que se conecta a un dispositivo, uno que envía archivos a ese dispositivo, le dice que ejecute una aplicación en su memoria Flash, etc. En lugar de codificar a mano un CoraScript, me gustaría crear una biblioteca C# que genere tal guion ¿Esta biblioteca C# se llamaría una "biblioteca contenedora" para el lenguaje de scripting CoraScript? –

+0

El intérprete de línea de comandos para ese lenguaje de scripting es una aplicación de consola. Mientras se ejecuta esa aplicación, toma los comandos de CoraScript, los ejecuta y devuelve la salida de ese comando (por ejemplo, el comando 'Connect localhost' CoraScript devolvería la cadena' + connect, "coralib3.dll versión 1,8,11" 'para indicar que el comando se había ejecutado con éxito). –

2

Hay muchos ejemplos de "envoltorios" y el término a veces se usa indistintamente. A continuación se presentan un par de ejemplos que vienen a la mente:

DLL Wrapper

En el pasado he creado un contenedor COM en torno a un .NET DLL con el fin de utilizar las funciones avanzadas de .NET en aplicaciones antiguas que entiendo COM pero no entiendo .NET.

Envoltura de objetos (Java)

En Java, hay una clase proporcionada en el java.lang paquete para proporcionar métodos de objeto para los ocho tipos primitivos. Todas las clases de envoltura primitiva en Java son inmutables. Por lo tanto, las clases Wrapper se usan para representar valores primitivos cuando se requiere Object.

4

Función que engloba, una función cuyo propósito principal es llamar a una segunda función

+2

¿Cómo es esta respuesta más útil que la aceptada hace más de 4 años? Intente y responda preguntas legítimas, no aquellas que tienen una respuesta aceptada con muchos votos que se solicitaron hace mucho tiempo. – rayryeng

31

La mayoría de estas explicaciones son de carácter técnico y matar células de mi cerebro: explicación simple:

Lo que está terminando?

Cuando salió el ipad de Apple, estaba confundido. ¿Qué hace el iPad que el iPhone no hace? ¿No son básicamente lo mismo, excepto que uno tiene una pantalla más grande? En otras palabras, el iPad es como un Iphone, excepto que tiene una pantalla más grande: el iPad "envuelve" el iPhone. Lo que significa que usted tiene todas las ventajas del iPhone dentro de la propia IPAD, y tener los beneficios de una pantalla más grande, etc.

An iphone is the only thing inside an Ipad. The Ipad literally wraps the Iphone. Except you can't make calls with an Ipad because the ability to make phone calls have not been "exposed". Apple want you to buy x2 products not just one :P

Es, literalmente, lo mismo con "objetos".

............. el interior tiene todas las cosas buenas que es lo mismo, pero un exterior diferente. Una envoltura diferente.

"envolturas pueden exponer diferentes características que el objeto subyacente" (explicación simple de lo que esto significa más abajo):

veces el envoltorio podría limitar las cosas que usted puede acceder a su interior. Por ejemplo, el ipad puede limitar su capacidad para hacer llamadas telefónicas, aunque el iPhone esté enterrado dentro de él, tiene esa capacidad.

Otro ejemplo

Piense en un coche automático, y un coche manual. Detrás de escena, en un automóvil automático, hay algún mecanismo de ingeniería que cambia automáticamente los engranajes, pero fundamentalmente, debajo de la superficie, el automóvil sigue siendo un automóvil manual. En otras palabras, las características automáticas del automóvil "envuelven" la funcionalidad manual del automóvil. Si quería cambiar manualmente los engranajes en un automóvil automático, simplemente no puede hacerlo. La capacidad de cambiar de marcha "no está expuesta" en el automóvil automático. Pero está expuesto en un automóvil manual. De acuerdo, la analogía es un poco tensa, pero espero que veas a qué me refiero.

¡Ahora combine esta explicación con los que están arriba de mí y creo que tendrá mucha más suerte para entender lo que está pasando! Cualquier pregunta, por favor comience a comentar y trataré de aclararla :)

+0

Me gustan estas explicaciones cuando se explica jergas tecnológicas. ¿Sabes que algún sitio específicamente hace eso? Gracias. – vira

+1

sí definitivamente hay un sitio como este, pero olvidé lo que era – BKSpurgeon

Cuestiones relacionadas