Joan Ballester

Programación, Desarrollo Web, Software libre, GNU/Linux, Debian, Tecnología

Patrones de diseño: SRP

Vamos con SRP:

Single Responsibility Principle (Principio de Responsabilidad Única)

Como frase, nos quedaremos con esta: Una clase debe tener una única razón para cambiar.

Asumamos que necesitamos un objeto que guarde un email. Utilizaremos la interface IEmail del ejemplo.
A primera vista todo funciona. Pero podemos ver como IEmail y Email tienen 2 razones para cambiar.

Si guardamos una clase, cada cambio de responsabilidad afectará a la otra.

// SRP - Mal ejemplo

interface IEmail {
	public void setSender(String sender);
	public void setReceiver(String receiver);
	public void setContent(String content);
}

class Email implements IEmail {
	public void setSender(String sender) {// set sender; }
	public void setReceiver(String receiver) {// set receiver; }
	public void setContent(String content) {// set content; }
}

Podemos crear una nueva interface IContent y Content para repartir las responsabilidades.

// SRP - Buen ejemplo
interface IEmail {
	public void setSender(String sender);
	public void setReceiver(String receiver);
	public void setContent(IContent content);
}

interface Content {
	public String getAsString(); // used for serialization
}

class Email implements IEmail {
	public void setSender(String sender) {// set sender; }
	public void setReceiver(String receiver) {// set receiver; }
	public void setContent(IContent content) {// set content; }
}

Conclusión:

El SRP representa una buena forma de identificar clases durante la fase de diseño de una aplicación, y nos recuerda pensar en todas las vías en las que una clase puede evolucionar. Se necesita una buena separación de responsabilidades.


    
Posted by: Joan Ballester on 20 julio, 2009 @ 18:36
>>> Programación | ,

1 comentario »

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Vamos con SRP: Single Responsibility Principle (Principio de Responsabilidad Única) Como frase, nos quedaremos con esta: Una clase debe tener una única razón para cambiar. Asumamos que necesitamos un objeto que guarde un ema…

    Trackback by Bitacoras.com — 14 septiembre, 2009 @ 18:41

RSS feed para los comentarios de esta entrada. TrackBack URL

Deja un comentario