2011-06-08 8 views
5

Parece que si sigo estrictamente el principio de responsabilidad única, entonces tendré que agregar getters públicos para dividir las funcionalidades que pueden cambiar. Para mí, esto parece violar la encapsulación al exponer la estructura interna de los objetos.¿La adhesión estricta al Principio de Responsabilidad Individual viola la encapsulación?

Por ejemplo, supongamos que tengo una clase que representa un archivo cargado. En el pasado he utilizado métodos como ToHTML() con el fin de evitar captadores y mantener la encapsulación:

public class UploadedFile() { 
    private String filename; 
    private String uri; 
    public String toHtml() { 
    return <html string>; 
} 

Pero pude ver dónde se podría argumentar que, sobre la base de SRP, es posible que desee incluir captadores de nombre de archivo y uri y generar el html en otro lugar.

Respuesta

1

En esta situación, filename y uri habría propiedades de su clase UploadedFile() que sería lógico mantener oculto, por lo que proporciona captadores para los no viola la encapsulación en absoluto, en mi opinión.

La violación de la encapsulación se produciría si creó los campos públicos filename y uri y acaba de acceder a ellos directamente.

Cuestiones relacionadas