«

»

mar 19 2012

avatar

Imprimir este Entrada

Técnica de Refactoring en Español: Extract Class

Warning!

Si quieres saber cómo, cuando y donde aplicar esta técnica por favor visita:  que son las tecnicas de refactoring en espanol II
Tutorial Tecnicas de Refactoring en Español

Tutorial Tecnicas de Refactoring en Español

Refactoring: Extract Class

Finalidad:

Una clase tiene responsabilidades que no le corresponde, sino que deberian pertener a otra clase.

Mecánica:

  • Decidir como dividir las responsabilidades de la clase.
  • Crear una nueva clase que alojará ciertas responsabilidades.
  • Vincular a la clase original con la nueva.
  • Usar Move Field en cada campo que se quiera mover.
  • Compilar y testear cada movimiento.
  • Usar Move Method para mover los métodos que se encontraban en la clase original a la nueva.
  • Compilar y testear.
  • Reveer las interfaces de cada una de las clases.
  • Decidir como exponer la nueva clase.

Ejemplo Extract Class:

Tenemos una clase usuario donde tiene todos los atributos correspondientes a un usuario de un sistema X y ademas tiene dentro de si el manejo de permisos.

 

 


public class Usuario {

String _nombre;

String[] _permisos;

public String getNombre(){

return _nombre;

}

public String[] getPermisos(){

return _permisos;

}

public String[] obtenerPermisosParaUsuario(int oidUsuario){

//busca los permisos del usuario

}

public void manejaPermisos(){

//Código que hace operaciones con los permisos

}

}

graphics/arrow.gif

En este caso la clase Usuario deberia tener una lista de permisos pero no deberia hacer manejo de los mismos. Por lo tanto, vamos a crear una clase Permisos para que sea esta la que tenga el comportamiento necesario.


public class Usuario {

String _nombre;

Permisos[] _permisos;

public String getNombre(){

return _nombre;

}

public String[] getPermisos(){

return _permisos;

}

}

class Permisos{

String _nombrePermiso;

public String[] obtenerPermisosParaUsuario(int oidUsuario){

//devuelve los permisos del usuario

}

public void manejaPermisos(){

//Código que hace operaciones con los permisos

}

}

Esto ha sido todo el artículo Técnica de Refactoring en Español: Extract Class

Be Sociable, Comparte a SurPatterns!

Acerca del autor

avatar

Emmanuel

Ingeniero en Sistemas. Amante de la programación. Tiene conocimientos de: Java, Visual .Net, C#, Adobe Flex, HTML5, JavaScript, ORMs como Hibernate y las principales bases de datos. También trabajó con otras tecnologías como: People Soft y SAP. Actualmente también escribe artículos para su sitio personal SurPatterns. Pueden seguirlo en twitter a traves de @SurPatterns.

Enlace permanente a este artículo: http://surpatterns.com/sitio/tecnicas-refactoring-surpatterns/moving-features-between-objects-surpatterns/tecnica-de-refactoring-extract-class/

Un ping

  1. avatar
    Que son las tecnicas de Refactoring en Español (II) » Sur Patterns Community

    [...] se podría considerar usar Extract Class en una clase y luego usar el nuevo componente en la otra [...]

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes utilizar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>