design-patterns - facade pattern
¿Qué es una clase de envoltorio? (17)
Actualmente utilicé una clase de envoltorio para mi proyecto y los principales beneficios que obtengo (solo un beneficio para ampliar la explicación del tema):
Manejo de excepciones: mi clase principal, que otra clase envuelve, tiene métodos que están generando excepciones si ocurren, por lo que creé una clase contenedora que controla las excepciones y las registra de inmediato. Por lo tanto, en mi ámbito principal, no hay excepción de manejo. Acabo de llamar a un método y hacer algo.
Uso fácil: Puedo iniciar fácilmente el objeto. Normalmente la fase de inicio se construye de muchos pasos.
Código de legibilidad: cuando otro programador abre mi código, el código parecerá muy claro y fácil de manipular.
Ocultar los detalles: si está generando una clase que otro programador va a usar, entonces puede ajustar los detalles como "manejo de errores, manejo de excepciones, mensajes de registro y etc." para que el programador no tenga que manejar El caos, simplemente utiliza los métodos.
¿Qué es una clase de envoltorio?
¿Cómo son útiles estas clases?
En general, una clase envoltura es cualquier clase que "ajusta" o "encapsula" la funcionalidad de otra clase o componente. Estos son útiles al proporcionar un nivel de abstracción de la implementación de la clase o componente subyacente; por ejemplo, las clases de envoltorio que envuelven los componentes COM pueden administrar el proceso de invocación del componente COM sin molestar el código de llamada. También pueden simplificar el uso del objeto subyacente al reducir el número de puntos de interfaz involucrados; Con frecuencia, esto permite un uso más seguro de los componentes subyacentes.
Hay varios patrones de diseño que pueden llamarse clases de envoltura.
Vea mi respuesta a " ¿En qué se diferencian los patrones de proxy, decorador, adaptador y puente? "
Justo como suena: una clase que "envuelve" la funcionalidad de otra clase o API en una API más simple o simplemente diferente.
Ver: patrón de adaptador , patrón de fachada.
La clase Wrapper es una clase que envuelve la otra clase y proporciona la abstracción entre el cliente y la clase original que se está envolviendo.
La clase de contenedor es un contenedor alrededor de un tipo de datos primitivo. Representa tipos de datos primitivos en sus instancias de clase correspondientes, por ejemplo, un tipo de datos booleano puede representarse como una instancia de clase booleana. Todas las clases primitivas de envoltura en Java son inmutables, es decir, una vez que se asigna un valor a una instancia de clase de envoltura no se puede cambiar más.
La programación Java proporciona una clase de envoltorio para cada tipo de datos primitivos, para convertir los tipos de datos primitivos para que correspondan al objeto de la clase de envoltorio.
Las clases Wrapper proporcionan una forma de usar tipos primitivos como objetos. Para cada primitivo, tenemos una clase envoltura como, por ejemplo,
int Integer
byte Byte
Entero y Byte son las clases de envoltorio de primitivo int y byte. Hay momentos / restricciones en los que necesita usar los primitivos como objetos para que las clases de envoltura proporcionen un mecanismo llamado boxeo / desempaquetado.
El concepto puede entenderse bien por el siguiente ejemplo como
double d = 135.0 d;
Double doubleWrapper = new Double(d);
int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();
Por lo tanto, esta es la forma en que podemos usar el tipo de clase de envoltorio para convertirlo también en otros tipos primitivos. Este tipo de conversión se usa cuando necesita convertir un tipo primitivo en objeto y usarlos también para obtener otros primitivos. Aunque para este enfoque, debe escribir un código grande. Sin embargo, se puede lograr lo mismo con la técnica de conversión simple, ya que el fragmento de código se puede lograr de la siguiente manera
double d = 135.0;
int integerValue = (int) d ;
Aunque el valor doble se convierte explícitamente en un valor entero también llamado como downcasting.
Las clases Wrapper surgieron para satisfacer una necesidad básica de los programadores, es decir, para usar valores primitivos siempre que solo se permiten objetos. Como su nombre sugiere, las clases de envoltorio envuelven un valor primitivo y mantienen el valor en un Objeto. Por lo tanto, todos los lugares donde no se permitían las primitivas, como los genéricos, las hashmap-keys, Arraylists, etc., los programadores ahora tienen la opción de proporcionar estos valores primitivos como sus correspondientes tipos de envoltura.
Además, estos tipos de envoltura tienen varios métodos de utilidad para convertir de tipo primitivo a tipos de envoltura correspondientes y viceversa, y también de cadenas a tipos de envoltura y viceversa.
He escrito un artículo detallado sobre clases de envoltorios en mi blog que explica en profundidad el concepto de tipos de envoltorios - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Divulgación - Este blog es de mi propiedad.
Para hacer una clase envoltura el bienestar no es un trabajo fácil. Comprender una clase de envoltorio, cómo está diseñado por otros, tampoco es un trabajo fácil. Porque es idea, no código. Solo cuando entiendes la idea, puedes entender la envoltura.
También podría ser valioso tener en cuenta que en algunos entornos, gran parte de lo que podrían hacer las clases de envoltura está siendo reemplazada por aspectos.
EDITAR:
En general, una envoltura ampliará lo que hace la envoltura, sin preocuparse por la implementación de la envoltura, de lo contrario, no hay razón para envolver que extender la clase envuelta. Un ejemplo típico es agregar información de tiempo o funcionalidad de registro alrededor de otra interfaz de servicio, en lugar de agregarla a cada implementación de esa interfaz.
Esto termina siendo un ejemplo típico para la programación de Aspect. En lugar de ir a través de una función de interfaz por función y agregar el registro de repetición, en la programación de aspectos se define un punto de corte, que es un tipo de expresión regular para los métodos, y luego declara los métodos que desea ejecutar antes, después o alrededor de todos los métodos que coincidan el punto de corte Probablemente sea justo decir que la programación de aspectos es un tipo de uso del patrón Decorator, para el cual también se pueden usar las clases de envoltura, pero que ambas tecnologías tienen otros usos.
Una clase contenedora es una clase que se utiliza para envolver otra clase para agregar una capa de direccionamiento indirecto y abstracción entre el cliente y la clase original que se está envolviendo.
Una clase de envoltorio no necesariamente tiene que envolver otra clase. Puede ser una funcionalidad de ajuste de clase API en, por ejemplo, un archivo dll.
Por ejemplo, podría ser muy útil crear una clase de envoltorio dll, que se encargue de toda la inicialización y limpieza de dll y crear métodos de clase que envuelvan los punteros de función creados desde, por ejemplo, GetProcAddress()
.
Saludos!
Una clase envoltura es una clase que se "envuelve" alrededor de otra cosa, al igual que su nombre.
La definición más formal de esto sería una clase que implementa el Patrón de Adaptador . Esto le permite modificar un conjunto de API en una forma más utilizable y legible. Por ejemplo, en C #, si desea usar la API nativa de Windows, es útil envolverla en una clase que cumpla con las pautas de diseño de .NET.
Una clase envoltura es una clase que tiene el único propósito de sostener algo y agregarle alguna funcionalidad. En Java, ya que los primitivos (como ints, floats, chars ...) no son objetos, por lo que si desea tratarlos como uno, entonces tiene que usar una clase de envoltorio. Supongamos que desea crear un vector de ints, el problema es que un vector solo contiene objetos no primitivos. Entonces, lo que harás es poner todas las entradas en un envoltorio Integer y usar eso. Ejemplo:
int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();
una clase envoltura es generalmente una clase que tiene un objeto como una propiedad privada. la envoltura implementa la API de ese objeto privado y, por lo tanto, se puede pasar como un argumento donde el objeto privado lo haría.
digamos que tiene una colección y desea utilizar algún tipo de traducción cuando se le agregan objetos: escribe una clase contenedora que contiene todos los métodos de la colección. cuando se llama a add (), el envoltorio traduce los argumentos en lugar de simplemente pasarlos a la colección privada.
la envoltura se puede usar en cualquier lugar donde se pueda usar una colección, y el objeto privado aún puede tener otros objetos que se refieran a ella y la lean.
una envoltura es una clase que se utiliza para comunicarse entre dos aplicaciones diferentes entre plataformas diferentes