2011-12-11 10 views

Respuesta

26

Teóricamente, los atributos protegidos (variables) son un antipatrón en los lenguajes orientados a objetos. Si solo las subclases necesitan acceder a los atributos de miembro de su superclase, defina los atributos en sí mismos como privados y cree métodos de acceso protegidos (getter y setter). Este enfoque aplica el concepto de 'ocultar información'. Existe una solución alternativa: definir atributos de miembros (finales) inmutables protegidos.

Otras lecturas:

+2

"Oficialmente"? ... –

+2

@Oli Charlesworth: vale, "oficialmente" puede no ser el término correcto, ¿estarías de acuerdo si digo "teóricamente"? – home

17

supongo, por lo que todo lo privado es un anti-patrón. A menudo, las clases se utilizan de forma agrupada y, en su conjunto, representan entidades encapsuladas que se colocan en paquetes separados. No es necesario ocultar algo el uno al otro, pero esta regla impone la ocultación sin una buena razón, lo que aumenta el desorden y hace que el estilo (como yo lo entiendo) sea peor. Mientras tanto, a menudo vemos que cada clase en paquete es pública. Supongo que esto es mucho peor, pero el estilo de comprobación no lo comprueba.

La encapsulación existe no solo en el nivel de clase, sino también en el paquete, el sistema, etc. Y creo que estos niveles son aún más importantes.

4

Permitir el acceso al paquete simplifica la programación dentro de un paquete y reduce el código repetitivo. Muchas veces, el acceso solo es necesario desde dentro del paquete. El acceso privado te obliga a crear muchos métodos de acceso casi inútiles. Esto realmente tiene el efecto de reducir la encapsulación y el ocultamiento de información porque una clase tiene que exponer la aplicación interna de datos/estructura en lugar de solo un paquete a través de métodos de acceso público. La visibilidad predeterminada del paquete también facilita las pruebas porque las clases de prueba también se encuentran en el mismo paquete (en el directorio/árbol de prueba).

Cuestiones relacionadas