Atributos Decorativos Con C#

Páginas: 7 (1725 palabras) Publicado: 4 de octubre de 2011
Atributos decorativos y Reflection
Los marcos de desarrollo de software, en especial aquellos que soportan código intermedio o código manejado, como Microsoft .Net o Java, así como otros de lato nivel cuentan con una cualidad interesante, pero a veces poco usada. Esta cualidad, llamada Reflection (También podemos encontrarlo en castellano como introspección o reflexión) les permite a losdesarrolladores de software que trabajan con estas plataformas poder ver, analizar y modificar el código desde el mismo código desde el mismo código en el momento en que este se ejecuta.
Si pensamos en algunas de las posibilidades de implementación que esta técnica nos puede dar, rápidamente podríamos plantear la del análisis de métodos de un objeto y ejecutar todos sin que sepamos, realmente, cuáleso cuantos existen; otra posibilidad podría ser la de agrupar y seleccionar solo aquellos objetos que cumplan con una determinada característica como por ejemplo, implementar una interfaz específica, heredar de una clase base particular, o contener un constructor con un parámetro especial; en todo caso, las posibilidades son variadas, pero posiblemente lo más importante es que nos fuerzan a ir unpaso más lejos dentro del desarrollo de las líneas de código y pensar estas más allá de una clásica implementación de los conceptos de orientación a objeto. Para entender esto último, imaginemos el escenario clásico en una aplicación de orientación a objetos. Un conjunto de clases especializadas, objetos que son pasados entre ellas, y cada una realizando acciones específicas sobre estos objetospara luego desencadenar una acción. Este escenario podría aplicarse a la ejecución de reglas de validación de contraseñas, y posiblemente podríamos aplicar un patrón clásico de cadena de responsabilidades para el encadenado y la posterior ejecución de cada una de las reglas. Veamos una implementación de este patrón.
internal interface IEslabon
{
void Ejecutar(string valor);
IEslavonSiguienteEslabon { get; set; }
}
Como primer elemento, creamos una interfaz de la cual los eslabones de la cadena de responsabilidades implementarán. De esta forma, cada clase solo necesitará ser parte de este grupo para poder ser incluida dentro de la cadena.
internal class Eslavon1 : IEslabon
{
public void Ejecutar(string valor)
{
if (valor.Length <= 7)Console.WriteLine("Cadena muy corta");
else
if (SiguienteEslabon != null)
SiguienteEslabon.Ejecutar(valor);
}
public IEslabon SiguienteEslabon { get; set; }
}

internal class Eslavon2 : IEslabon
{
public void Ejecutar(string valor)
{
if (valor.Length >= 15)
Console.WriteLine("Cadena muy larga");
elseif (SiguienteEslabon != null)
SiguienteEslabon.Ejecutar(valor);
}

public IEslabon SiguienteEslabon { get; set; }
}
Como vemos en el código anterior, hemos creado dos clases que implementan de IEslabon, y cada una de estas se especializa en un tipo de validación del texto. Si la condición se cumple, un mensaje es mostrado en la consola de comandos y si no,se verifica la existencia de un siguiente eslabón en esta cadena para ejecutarlo y así continuar con la validación del texto.

Al ejecutar la cadena de responsabilidades, la regla del largo se cumple y un mensaje se muestra en la consola de comandos.
Indudablemente, si necesitamos otro eslabón que aplique otra regla de validación, solo tendremos que crear una nueva clase, implementar deIEslabon y adicionar el código para realizar la validación. En todo caso, un posible problema se presenta en el momento de la creación de la cadena en sí.
static void Main(string[] args)
{
IEslabon eslavon1 = new Eslavon1();
IEslabon eslavon2 = new Eslavon2();

eslavon1.SiguienteEslabon = eslavon2;
eslavon2.SiguienteEslabon = null;

eslavon1.Ejecutar("Texto a validar");...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Decora
  • decoraciones
  • Decoraciones
  • Decorar
  • decoradora
  • atributos
  • Atributos
  • atributos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS