En programación informática , un espejo es un mecanismo de reflexión que está completamente desacoplado del objeto cuya estructura se está inspeccionando. Esto contrasta con la reflexión tradicional, por ejemplo en Java , donde se inspecciona un objeto utilizando métodos del propio objeto (por ejemplo, para obtener un ).java.lang.Object::getClass()java.lang.Class<?>
Los espejos se adhieren a las cualidades de encapsulación , estratificación y correspondencia ontológica. [ 1 ]
Beneficios
Desacoplar el mecanismo de reflexión de los propios objetos permite obtener varias ventajas:
- La interfaz del objeto no está contaminada, por lo que no hay peligro de romper la reflexión al sobrescribir un método reflectivo.
- Puede haber diferentes sistemas de espejos.
- El sistema de espejos se puede eliminar por completo (lo que potencialmente permite realizar optimizaciones).
- Un sistema espejo puede funcionar con código remoto, ya que no está acoplado a una máquina en particular.
Lenguajes que utilizan espejos
- C++ , a través del
^^operador y el tipo devueltostd::meta::info. [ 2 ] - Dardo , por su
reflect()función. - Inko , [ 3 ] a través de su
std::mirrormódulo. - Rubinius ( implementación de Ruby ), a través de su
Rubinius::Mirror.reflect()método. [ 4 ] - Scala [ 5 ]
- Swift , a través de su
Swift.Mirrorclase y lareflect()función.
Véase también
Referencias
- ↑ Gilad Bracha y David Ungar, "Funcionalidades de metanivel de los lenguajes de programación orientados a objetos"
- ↑ cppreference.com. "std::meta::info" . cppreference.com . Consultado el 19 de mayo de 2026 .
- ↑ "Preguntas frecuentes" .
- ↑ "Rubinius/Mirror.rb en master · rubinius/Rubinius" .
- ↑ "Entorno, Universos y Espejos" .
- paradigmas de programación
- esbozos de informática