mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-15 20:59:07 +00:00
ead6373765
* Typo corrections * bridge pattern translated to spanish * builder pattern translated to spanish * context-object pattern translated to spanish * converter pattern translated to spanish * dependency injection pattern translated to spanish * factory pattern translated to spanish * factory-kit pattern translated to spanish * factory-method pattern translated to spanish * monostate pattern translated to spanish * multiton pattern translated to spanish * object mother pattern translated to spanish * object pool pattern translated to spanish * property pattern translated to spanish * prototype pattern translated to spanish * registry pattern translated to spanish * step builder pattern translated to spanish * value object pattern translated to spanish * typo corrections and resources urls refactor * grammar corrections * Add image to each pattern * translate all structural patterns to Spanish --------- Co-authored-by: luismateoh <luismateohm@gmail.com> Co-authored-by: luis.hincapie <luis.hincapie@blankfactor.com>
33 lines
1.6 KiB
Markdown
33 lines
1.6 KiB
Markdown
---
|
|
title: Role Object
|
|
category: Structural
|
|
language: es
|
|
tag:
|
|
- Extensibility
|
|
---
|
|
|
|
## También conocido como
|
|
Patrón Post, Patrón Extension Object
|
|
|
|
## Propósito
|
|
Adaptar un objeto a las necesidades de diferentes clientes mediante objetos de rol adjuntos de forma transparente, cada uno de los cuales representa un papel
|
|
que el objeto debe desempeñar en el contexto de ese cliente. El objeto gestiona su conjunto de roles de forma dinámica. Al representar los roles como
|
|
objetos individuales, los distintos contextos se mantienen separados y se simplifica la configuración del sistema.
|
|
|
|
## Diagrama de clases
|
|

|
|
|
|
## Aplicabilidad
|
|
Utiliza el patrón Objeto Rol, si:
|
|
|
|
- Quieres manejar una abstracción clave en diferentes contextos y no quieres poner las interfaces específicas de contexto resultantes en la misma interfaz de clase.
|
|
- Quieres manejar los roles disponibles dinámicamente para que puedan ser adjuntados y removidos bajo demanda, es decir en tiempo de ejecución, en lugar de fijarlos estáticamente en tiempo de compilación.
|
|
- Quiere tratar las extensiones de forma transparente y necesita preservar la identidad lógica del objeto del conglomerado de objetos resultante.
|
|
- Desea mantener los pares rol/cliente independientes entre sí, de modo que los cambios en un rol no afecten a los clientes que no estén interesados en ese rol.
|
|
|
|
## Créditos
|
|
|
|
- [Hillside - Role object pattern](https://hillside.net/plop/plop97/Proceedings/riehle.pdf)
|
|
- [Role object](http://wiki.c2.com/?RoleObject)
|
|
- [Fowler - Dealing with roles](https://martinfowler.com/apsupp/roles.pdf)
|