From d45dcb1a6306215aeb4ebbf200ae7a6123208048 Mon Sep 17 00:00:00 2001 From: David Medina Orozco <53974843+DavidMedinaO@users.noreply.github.com> Date: Tue, 9 Apr 2024 12:16:21 -0500 Subject: [PATCH] translation: Translate to Spanish (#2894) * Translate Iterator pattern to Spanish * Translate to Spanish: Servant pattern Sharding pattern Spatial-partition pattern Special-case pattern specification pattern State pattern Strategy pattern Subclass-case pattern * Update language to es * Fixing Missing translation * Translate to Spanish: template method pattern throttling pattern trampoline pattern transaction-script pattern type object pattern Update method pattern visitor pattern * Fixing Missing translation --- localization/es/template-method/README.md | 155 ++++++++++++ .../etc/template_method_urm.png | Bin 0 -> 36470 bytes localization/es/throttling/README.md | 218 ++++++++++++++++ .../es/throttling/etc/throttling_urm.png | Bin 0 -> 53754 bytes localization/es/trampoline/README.md | 149 +++++++++++ .../es/trampoline/etc/trampoline.urm.png | Bin 0 -> 15316 bytes localization/es/transaction-script/README.md | 117 +++++++++ .../etc/transaction-script.png | Bin 0 -> 66480 bytes localization/es/typeobjectpattern/README.md | 209 ++++++++++++++++ .../etc/typeobjectpattern.urm.png | Bin 0 -> 67712 bytes localization/es/update-method/README.md | 33 +++ .../update-method/etc/update-method.urm.png | Bin 0 -> 39843 bytes localization/es/visitor/README.md | 232 ++++++++++++++++++ localization/es/visitor/etc/visitor.png | Bin 0 -> 22790 bytes localization/es/visitor/etc/visitor_1.png | Bin 0 -> 47078 bytes 15 files changed, 1113 insertions(+) create mode 100644 localization/es/template-method/README.md create mode 100644 localization/es/template-method/etc/template_method_urm.png create mode 100644 localization/es/throttling/README.md create mode 100644 localization/es/throttling/etc/throttling_urm.png create mode 100644 localization/es/trampoline/README.md create mode 100644 localization/es/trampoline/etc/trampoline.urm.png create mode 100644 localization/es/transaction-script/README.md create mode 100644 localization/es/transaction-script/etc/transaction-script.png create mode 100644 localization/es/typeobjectpattern/README.md create mode 100644 localization/es/typeobjectpattern/etc/typeobjectpattern.urm.png create mode 100644 localization/es/update-method/README.md create mode 100644 localization/es/update-method/etc/update-method.urm.png create mode 100644 localization/es/visitor/README.md create mode 100644 localization/es/visitor/etc/visitor.png create mode 100644 localization/es/visitor/etc/visitor_1.png diff --git a/localization/es/template-method/README.md b/localization/es/template-method/README.md new file mode 100644 index 000000000..bb427d125 --- /dev/null +++ b/localization/es/template-method/README.md @@ -0,0 +1,155 @@ +--- +title: Template method +category: Behavioral +language: es +tag: + - Gang of Four +--- + +## Propósito + +Define el esqueleto de un algoritmo en una operación, difiriendo algunos pasos a subclases. Plantilla +Método que permite a las subclases redefinir ciertos pasos de un algoritmo sin cambiar la estructura del algoritmo. +del algoritmo. + +## Explicación + +Ejemplo del mundo real + +> Los pasos generales para robar un objeto son los mismos. Primero, eliges al objetivo, luego lo confundes... +> y finalmente, robas el objeto. Sin embargo, hay muchas maneras de implementar estos +> pasos. + +En palabras sencillas + +> El patrón Template Method esboza los pasos generales en la clase padre y deja que las implementaciones hijas concretas definan los detalles. + +Wikipedia dice + +> En programación orientada a objetos, el método de plantillas es uno de los patrones de diseño de comportamiento +> identificados por Gamma et al. en el libro Design Patterns. El método de plantilla es un método en una +> superclase, normalmente una superclase abstracta, y define el esqueleto de una operación en términos de +> una serie de pasos de alto nivel. Estos pasos son a su vez implementados por métodos de ayuda adicionales +> en la misma clase que el método de plantilla. + +**Ejemplo programático** + +Presentemos primero la clase de método de plantilla junto con sus implementaciones concretas. +Para asegurarse de que las subclases no sobrescriben el método de plantilla, el método de plantilla (en nuestro caso +método `steal`) debe ser declarado `final`, de lo contrario el esqueleto definido en la clase base podría +ser sobreescrito en subclases. + +```java +@Slf4j +public abstract class StealingMethod { + + protected abstract String pickTarget(); + + protected abstract void confuseTarget(String target); + + protected abstract void stealTheItem(String target); + + public final void steal() { + var target = pickTarget(); + LOGGER.info("The target has been chosen as {}.", target); + confuseTarget(target); + stealTheItem(target); + } +} + +@Slf4j +public class SubtleMethod extends StealingMethod { + + @Override + protected String pickTarget() { + return "shop keeper"; + } + + @Override + protected void confuseTarget(String target) { + LOGGER.info("Approach the {} with tears running and hug him!", target); + } + + @Override + protected void stealTheItem(String target) { + LOGGER.info("While in close contact grab the {}'s wallet.", target); + } +} + +@Slf4j +public class HitAndRunMethod extends StealingMethod { + + @Override + protected String pickTarget() { + return "old goblin woman"; + } + + @Override + protected void confuseTarget(String target) { + LOGGER.info("Approach the {} from behind.", target); + } + + @Override + protected void stealTheItem(String target) { + LOGGER.info("Grab the handbag and run away fast!"); + } +} +``` + +Aquí está la clase ladrón halfling que contiene el método de plantilla. + +```java +public class HalflingThief { + + private StealingMethod method; + + public HalflingThief(StealingMethod method) { + this.method = method; + } + + public void steal() { + method.steal(); + } + + public void changeMethod(StealingMethod method) { + this.method = method; + } +} +``` + +Y por último, mostramos cómo el ladrón halfling utiliza los diferentes métodos de robo. + +```java + var thief = new HalflingThief(new HitAndRunMethod()); + thief.steal(); + thief.changeMethod(new SubtleMethod()); + thief.steal(); +``` + +## Diagrama de clases + +![alt text](./etc/template_method_urm.png "Template Method") + +## Aplicabilidad + +El patrón Template Method debería utilizarse + +* Para implementar las partes invariantes de un algoritmo una vez y dejar que las subclases implementen el comportamiento que puede variar. +* Cuando el comportamiento común entre subclases debe ser factorizado y localizado en una clase común para evitar la duplicación de código. Este es un buen ejemplo de "refactorizar para generalizar", tal y como lo describen Opdyke y Johnson. Primero se identifican las diferencias en el código existente y luego se separan las diferencias en nuevas operaciones. Por último, se sustituye el código diferente por un método de plantilla que llama a una de estas nuevas operaciones +* Para controlar las extensiones de las subclases. Puede definir un método de plantilla que llame a operaciones "gancho" en puntos específicos, permitiendo así extensiones sólo en esos puntos + +## Tutoriales + +* [Template-method Pattern Tutorial](https://www.journaldev.com/1763/template-method-design-pattern-in-java) + +## Usos conocidos + +* [javax.servlet.GenericServlet.init](https://jakarta.ee/specifications/servlet/4.0/apidocs/javax/servlet/GenericServlet.html#init--): +El método `GenericServlet.init(ServletConfig config)` llama al método sin parámetros `GenericServlet.init()` que está pensado para ser sobreescrito en subclases. +El método `GenericServlet.init(ServletConfig config)` es el método plantilla en este ejemplo. + +## Créditos + +* [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/gp/product/0201633612/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0201633612&linkCode=as2&tag=javadesignpat-20&linkId=675d49790ce11db99d90bde47f1aeb59) +* [Head First Design Patterns: A Brain-Friendly Guide](https://www.amazon.com/gp/product/0596007124/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0596007124&linkCode=as2&tag=javadesignpat-20&linkId=6b8b6eea86021af6c8e3cd3fc382cb5b) +* [Refactoring to Patterns](https://www.amazon.com/gp/product/0321213351/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0321213351&linkCode=as2&tag=javadesignpat-20&linkId=2a76fcb387234bc71b1c61150b3cc3a7) diff --git a/localization/es/template-method/etc/template_method_urm.png b/localization/es/template-method/etc/template_method_urm.png new file mode 100644 index 0000000000000000000000000000000000000000..b7babccff96da7d88fb99ae5a705c7d4f025904c GIT binary patch literal 36470 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∈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 U>vZmeO~f^#f|76Z__aR&f82J0kN^Mx literal 0 HcmV?d00001 diff --git a/localization/es/throttling/README.md b/localization/es/throttling/README.md new file mode 100644 index 000000000..d6612caba --- /dev/null +++ b/localization/es/throttling/README.md @@ -0,0 +1,218 @@ +--- +title: Throttling +category: Behavioral +language: es +tag: + - Performance + - Cloud distributed +--- + +## Propósito + +Garantizar que un cliente determinado no pueda acceder a los recursos del servicio más allá del límite asignado. + +## Explicación + +Ejemplo del mundo real + +> Un joven humano y un viejo enano entran en un bar. Empiezan a pedir cervezas al camarero. +> El camarero se da cuenta inmediatamente de que el joven humano no debe consumir demasiadas bebidas demasiado rápido +> y se niega a servir si no ha pasado suficiente tiempo. Para el viejo enano, el ritmo de servicio puede ser mayor. +> ser mayor. + +En palabras sencillas + +> El patrón de Throttling se utiliza para limitar la velocidad de acceso a un recurso. + +[Microsoft documentation](https://docs.microsoft.com/en-us/azure/architecture/patterns/throttling) dice + +> Controlar el consumo de recursos utilizados por una instancia de una aplicación, un tenant individual, +> o un servicio completo. Esto puede permitir que el sistema continúe funcionando y cumpla con los acuerdos de nivel de servicio, incluso cuando un aumento de la demanda impone una carga extrema sobre los recursos. + +**Ejemplo programático** + +La clase `BarCustomer` presenta los clientes de la API `Bartender`. La clase `CallsCount` registra el número de +llamadas por `BarCustomer`. + +```java +public class BarCustomer { + + @Getter + private final String name; + @Getter + private final int allowedCallsPerSecond; + + public BarCustomer(String name, int allowedCallsPerSecond, CallsCount callsCount) { + if (allowedCallsPerSecond < 0) { + throw new InvalidParameterException("Number of calls less than 0 not allowed"); + } + this.name = name; + this.allowedCallsPerSecond = allowedCallsPerSecond; + callsCount.addTenant(name); + } +} + +@Slf4j +public final class CallsCount { + private final Map tenantCallsCount = new ConcurrentHashMap<>(); + + public void addTenant(String tenantName) { + tenantCallsCount.putIfAbsent(tenantName, new AtomicLong(0)); + } + + public void incrementCount(String tenantName) { + tenantCallsCount.get(tenantName).incrementAndGet(); + } + + public long getCount(String tenantName) { + return tenantCallsCount.get(tenantName).get(); + } + + public void reset() { + tenantCallsCount.replaceAll((k, v) -> new AtomicLong(0)); + LOGGER.info("reset counters"); + } +} +``` + +A continuación, se introduce el servicio al que llaman los inquilinos. Para realizar un seguimiento del número de llamadas, se utiliza un temporizador de estrangulamiento. + +```java +public interface Throttler { + + void start(); +} + +public class ThrottleTimerImpl implements Throttler { + + private final int throttlePeriod; + private final CallsCount callsCount; + + public ThrottleTimerImpl(int throttlePeriod, CallsCount callsCount) { + this.throttlePeriod = throttlePeriod; + this.callsCount = callsCount; + } + + @Override + public void start() { + new Timer(true).schedule(new TimerTask() { + @Override + public void run() { + callsCount.reset(); + } + }, 0, throttlePeriod); + } +} +``` + +El `Bartender` ofrece el servicio `orderDrink` a los `BarCustomer`s. Los clientes probablemente no +saben que la tasa de servicio de cerveza está limitada por su apariencia. + +```java +class Bartender { + + private static final Logger LOGGER = LoggerFactory.getLogger(Bartender.class); + private final CallsCount callsCount; + + public Bartender(Throttler timer, CallsCount callsCount) { + this.callsCount = callsCount; + timer.start(); + } + + public int orderDrink(BarCustomer barCustomer) { + var tenantName = barCustomer.getName(); + var count = callsCount.getCount(tenantName); + if (count >= barCustomer.getAllowedCallsPerSecond()) { + LOGGER.error("I'm sorry {}, you've had enough for today!", tenantName); + return -1; + } + callsCount.incrementCount(tenantName); + LOGGER.debug("Serving beer to {} : [{} consumed] ", barCustomer.getName(), count+1); + return getRandomCustomerId(); + } + + private int getRandomCustomerId() { + return ThreadLocalRandom.current().nextInt(1, 10000); + } +} +``` + +Ahora es posible ver el ejemplo completo en acción. BarCustomer` el joven humano está limitado a 2 +llamadas por segundo y el viejo enano a 4. + +```java +public static void main(String[] args) { + var callsCount = new CallsCount(); + var human = new BarCustomer("young human", 2, callsCount); + var dwarf = new BarCustomer("dwarf soldier", 4, callsCount); + + var executorService = Executors.newFixedThreadPool(2); + + executorService.execute(() -> makeServiceCalls(human, callsCount)); + executorService.execute(() -> makeServiceCalls(dwarf, callsCount)); + + executorService.shutdown(); + try { + executorService.awaitTermination(10, TimeUnit.SECONDS); + } catch (InterruptedException e) { + LOGGER.error("Executor service terminated: {}", e.getMessage()); + } +} + +private static void makeServiceCalls(BarCustomer barCustomer, CallsCount callsCount) { + var timer = new ThrottleTimerImpl(1000, callsCount); + var service = new Bartender(timer, callsCount); + // Sleep is introduced to keep the output in check and easy to view and analyze the results. + IntStream.range(0, 50).forEach(i -> { + service.orderDrink(barCustomer); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + LOGGER.error("Thread interrupted: {}", e.getMessage()); + } + }); +} +``` + +Un extracto de la salida de consola del ejemplo: + +``` +18:46:36.218 [Timer-0] INFO com.iluwatar.throttling.CallsCount - reset counters +18:46:36.218 [Timer-1] INFO com.iluwatar.throttling.CallsCount - reset counters +18:46:36.242 [pool-1-thread-2] DEBUG com.iluwatar.throttling.Bartender - Serving beer to dwarf soldier : [1 consumed] +18:46:36.242 [pool-1-thread-1] DEBUG com.iluwatar.throttling.Bartender - Serving beer to young human : [1 consumed] +18:46:36.342 [pool-1-thread-2] DEBUG com.iluwatar.throttling.Bartender - Serving beer to dwarf soldier : [2 consumed] +18:46:36.342 [pool-1-thread-1] DEBUG com.iluwatar.throttling.Bartender - Serving beer to young human : [2 consumed] +18:46:36.443 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:36.443 [pool-1-thread-2] DEBUG com.iluwatar.throttling.Bartender - Serving beer to dwarf soldier : [3 consumed] +18:46:36.544 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:36.544 [pool-1-thread-2] DEBUG com.iluwatar.throttling.Bartender - Serving beer to dwarf soldier : [4 consumed] +18:46:36.645 [pool-1-thread-2] ERROR com.iluwatar.throttling.Bartender - I'm sorry dwarf soldier, you've had enough for today! +18:46:36.645 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:36.745 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:36.745 [pool-1-thread-2] ERROR com.iluwatar.throttling.Bartender - I'm sorry dwarf soldier, you've had enough for today! +18:46:36.846 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:36.846 [pool-1-thread-2] ERROR com.iluwatar.throttling.Bartender - I'm sorry dwarf soldier, you've had enough for today! +18:46:36.947 [pool-1-thread-2] ERROR com.iluwatar.throttling.Bartender - I'm sorry dwarf soldier, you've had enough for today! +18:46:36.947 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:37.048 [pool-1-thread-2] ERROR com.iluwatar.throttling.Bartender - I'm sorry dwarf soldier, you've had enough for today! +18:46:37.048 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:37.148 [pool-1-thread-1] ERROR com.iluwatar.throttling.Bartender - I'm sorry young human, you've had enough for today! +18:46:37.148 [pool-1-thread-2] ERROR com.iluwatar.throttling.Bartender - I'm sorry dwarf soldier, you've had enough for today! +``` + +## Diagrama de clases + +![alt text](./etc/throttling_urm.png "Throttling pattern class diagram") + +## Aplicabilidad + +El patrón Throttling debe utilizarse: + +* Cuando se necesita restringir el acceso al servicio para no tener un alto impacto en el rendimiento del mismo. +* Cuando varios clientes consumen los mismos recursos del servicio y la restricción debe hacerse en función del uso por cliente. + +## Créditos + +* [Throttling pattern](https://docs.microsoft.com/en-us/azure/architecture/patterns/throttling) +* [Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications (Microsoft patterns & practices)](https://www.amazon.com/gp/product/B00ITGHBBS/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=B00ITGHBBS&linkId=12aacdd0cec04f372e7152689525631a) diff --git a/localization/es/throttling/etc/throttling_urm.png b/localization/es/throttling/etc/throttling_urm.png new file mode 100644 index 0000000000000000000000000000000000000000..a9824e24b5a4da2e24fffd0e96903c138e55d6c3 GIT binary patch literal 53754 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

anM~zt zf3bhqUHsd?fF)ZX!u^5b!~{%q%7Fgk@Z;(}dk4PESKtEf3LiT3bO(;?5VnU3tzK*| zw~O_Ho+}X%5hl3*cL)QWDz!O6(ND4}wKKX+(t7z z8`bXD?^viarm>{{WI`oB4nNy@Df*L-@HvImPo&~Lb;vp*KjvKL`;nPUDDneRzLrUR zXr5^Au+>PhVU7y(g*wWg9}_^R$-SGsV_{>M*Goa@Hmk>QsE-OmFcB6O_ARj$2YPWI zYqA)5_dreYU9!wyz_**=&<4IMyxXszyr0|+_wQ4G;_NN%=LQMRz5M(sJcNUUxSysY ZdsM#qrnOo#>`J&lOG_do(!{i0{2x-4wGsdT literal 0 HcmV?d00001 diff --git a/localization/es/trampoline/README.md b/localization/es/trampoline/README.md new file mode 100644 index 000000000..11270760a --- /dev/null +++ b/localization/es/trampoline/README.md @@ -0,0 +1,149 @@ +--- +title: Trampoline +category: Behavioral +language: es +tag: + - Performance +--- + +## Propósito + +El patrón Trampoline se utiliza para implementar algoritmos recursivamente en Java sin volar la pila +y para intercalar la ejecución de funciones sin codificarlas juntas. + +## Explicación + +La recursión es una técnica frecuentemente adoptada para resolver problemas algorítmicos en un estilo de divide y vencerás. +Por ejemplo, el cálculo de la suma acumulativa de Fibonacci y los factoriales. En este tipo de +problemas, la recursividad es más directa que su homóloga de bucle. Además, la recursividad puede +necesitar menos código y parecer más concisa. Hay un dicho que dice que todo problema de recursión puede resolverse +utilizando un bucle a costa de escribir código más difícil de entender. + +Sin embargo, las soluciones de tipo recursivo tienen una gran advertencia. Para cada llamada recursiva, normalmente se necesita +un valor intermedio almacenado y hay una cantidad limitada de memoria de pila disponible. Quedarse sin +memoria de pila crea un error de desbordamiento de pila y detiene la ejecución del programa. + +Trampoline pattern es un truco que permite definir algoritmos recursivos en Java sin desbordar la +pila. + +Ejemplo del mundo real + +> Un cálculo Fibonacci recursivo sin el problema de desbordamiento de pila utilizando el patrón Trampoline. + +En palabras sencillas + +> El patrón Trampoline permite la recursión sin agotar la memoria de la pila. + +Wikipedia dice + +> En Java, trampoline se refiere al uso de reflection para evitar el uso de clases internas, por ejemplo en +> eventos. La sobrecarga de tiempo de una llamada a reflection se intercambia por la sobrecarga de espacio de una clase interna. +> Trampolines en Java generalmente implican la creación de un GenericListener para pasar eventos a una clase externa. + +**Ejemplo programático** + +Esta es la implementación de `Trampoline` en Java. + +Cuando se llama a `get` sobre el Trampoline devuelto, internamente se itera llamando a `jump` sobre el +siempre que la instancia concreta devuelta sea `Trampoline`, deteniéndose una vez que la instancia +instancia devuelta sea `done`. + +```java +public interface Trampoline { + + T get(); + + default Trampoline jump() { + return this; + } + + default T result() { + return get(); + } + + default boolean complete() { + return true; + } + + static Trampoline done(final T result) { + return () -> result; + } + + static Trampoline more(final Trampoline> trampoline) { + return new Trampoline() { + @Override + public boolean complete() { + return false; + } + + @Override + public Trampoline jump() { + return trampoline.result(); + } + + @Override + public T get() { + return trampoline(this); + } + + T trampoline(final Trampoline trampoline) { + return Stream.iterate(trampoline, Trampoline::jump) + .filter(Trampoline::complete) + .findFirst() + .map(Trampoline::result) + .orElseThrow(); + } + }; + } +} +``` + +Uso del `Trampoline` para obtener valores Fibonacci. + +```java +public static void main(String[] args) { + LOGGER.info("Start calculating war casualties"); + var result = loop(10, 1).result(); + LOGGER.info("The number of orcs perished in the war: {}", result); +} + +public static Trampoline loop(int times, int prod) { + if (times == 0) { + return Trampoline.done(prod); + } else { + return Trampoline.more(() -> loop(times - 1, prod * times)); + } +} +``` + +Salida del programa: + +``` +19:22:24.462 [main] INFO com.iluwatar.trampoline.TrampolineApp - Start calculating war casualties +19:22:24.472 [main] INFO com.iluwatar.trampoline.TrampolineApp - The number of orcs perished in the war: 3628800 +``` + +## Diagrama de clases + +![alt text](./etc/trampoline.urm.png "Trampoline pattern class diagram") + +## Aplicabilidad + +Utilice el patrón Trampoline cuando: + +* Para implementar funciones recursivas de cola. Este patrón permite encender una operación sin pila. +* Para intercalar la ejecución de dos o más funciones en el mismo hilo. + +## Usos conocidos + +* [cyclops-react](https://github.com/aol/cyclops-react) + +## Créditos + +* [Trampolining: a practical guide for awesome Java Developers](https://medium.com/@johnmcclean/trampolining-a-practical-guide-for-awesome-java-developers-4b657d9c3076) +* [Trampoline in java ](http://mindprod.com/jgloss/trampoline.html) +* [Laziness, trampolines, monoids and other functional amenities: this is not your father's Java](https://www.slideshare.net/mariofusco/lazine) +* [Trampoline implementation](https://github.com/bodar/totallylazy/blob/master/src/com/googlecode/totallylazy/Trampoline.java) +* [What is a trampoline function?](https://stackoverflow.com/questions/189725/what-is-a-trampoline-function) +* [Modern Java in Action: Lambdas, streams, functional and reactive programming](https://www.amazon.com/gp/product/1617293563/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=1617293563&linkId=ad53ae6f9f7c0982e759c3527bd2595c) +* [Java 8 in Action: Lambdas, Streams, and functional-style programming](https://www.amazon.com/gp/product/1617291994/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=1617291994&linkId=e3e5665b0732c59c9d884896ffe54f4f) diff --git a/localization/es/trampoline/etc/trampoline.urm.png b/localization/es/trampoline/etc/trampoline.urm.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e9c7439a327dac019a1a420eaf460ef2092a52 GIT binary patch literal 15316 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 literal 0 HcmV?d00001 diff --git a/localization/es/transaction-script/README.md b/localization/es/transaction-script/README.md new file mode 100644 index 000000000..77cf8a2f1 --- /dev/null +++ b/localization/es/transaction-script/README.md @@ -0,0 +1,117 @@ +--- +title: Transaction Script +category: Behavioral +language: es +tag: + - Data access +--- + +## Propósito + +Transaction Script organiza la lógica de negocio por procedimientos donde cada procedimiento maneja una única +solicitud de la presentación. + +## Explicación + +Ejemplo del mundo real + +> Necesitas crear un sistema de reservas de habitaciones de hotel. Dado que los requisitos son bastante simples +> utilizar el patrón Transaction Script. + +En palabras sencillas + +> Transaction Script organiza la lógica de negocio en transacciones que el sistema necesita llevar a cabo. + +Ejemplo programático + +La clase `Hotel` se encarga de reservar y cancelar las reservas de habitaciones. + +```java +@Slf4j +public class Hotel { + + private final HotelDaoImpl hotelDao; + + public Hotel(HotelDaoImpl hotelDao) { + this.hotelDao = hotelDao; + } + + public void bookRoom(int roomNumber) throws Exception { + + Optional room = hotelDao.getById(roomNumber); + + if (room.isEmpty()) { + throw new Exception("Room number: " + roomNumber + " does not exist"); + } else { + if (room.get().isBooked()) { + throw new Exception("Room already booked!"); + } else { + Room updateRoomBooking = room.get(); + updateRoomBooking.setBooked(true); + hotelDao.update(updateRoomBooking); + } + } + } + + public void cancelRoomBooking(int roomNumber) throws Exception { + + Optional room = hotelDao.getById(roomNumber); + + if (room.isEmpty()) { + throw new Exception("Room number: " + roomNumber + " does not exist"); + } else { + if (room.get().isBooked()) { + Room updateRoomBooking = room.get(); + updateRoomBooking.setBooked(false); + int refundAmount = updateRoomBooking.getPrice(); + hotelDao.update(updateRoomBooking); + + LOGGER.info("Booking cancelled for room number: " + roomNumber); + LOGGER.info(refundAmount + " is refunded"); + } else { + throw new Exception("No booking for the room exists"); + } + } + } +} +``` + +La clase `Hotel` tiene dos métodos, uno para reservar y otro para cancelar una habitación respectivamente. Cada uno de ellos +transacción en el sistema, haciendo que `Hotel` implemente el patrón Transaction Script +Transaction Script. + +El método `bookRoom` consolida todos los pasos necesarios como comprobar si la habitación ya está reservada +o no, si no está reservada entonces reserva la habitación y actualiza la base de datos utilizando el DAO. + +El método `cancelRoom` consolida pasos como comprobar si la habitación está reservada o no, +si está reservada, calcula el importe del reembolso y actualiza la base de datos utilizando el DAO. + +## Diagrama de clases + +![alt text](./etc/transaction-script.png "Transaction script model") + +## Aplicabilidad + +Utilice el patrón Transaction Script cuando la aplicación tenga sólo una pequeña cantidad de lógica y esa +lógica no será extendida en el futuro. + +## Consecuencias + +* A medida que la lógica de negocio se complica, + se hace progresivamente más difícil mantener el script de transacción + en un estado bien diseñado. +* Puede ocurrir duplicación de código entre scripts de transacciones. +* Normalmente no es fácil refactorizar el script de transacciones a otros patrones de lógica de dominio. + del dominio. + +## Patrones relacionados + +* Domain Model +* Table Module +* Service Layer + +## Créditos + +* [Transaction Script Pattern](https://dzone.com/articles/transaction-script-pattern#:~:text=Transaction%20Script%20(TS)%20is%20the,need%20big%20architecture%20behind%20them.) +* [Transaction Script](https://www.informit.com/articles/article.aspx?p=1398617) +* [Patterns of Enterprise Application Architecture](https://www.amazon.com/gp/product/0321127420/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=0321127420&linkId=18acc13ba60d66690009505577c45c04) diff --git a/localization/es/transaction-script/etc/transaction-script.png b/localization/es/transaction-script/etc/transaction-script.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0cffb6a55170dbd710f528ddf5fd95b89757c1 GIT binary patch literal 66480 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]}MK;#%=!jm}b^t!DS(p2a*I^M5!#^f!%y^aJ* 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 QQM>EQODjv2Nf-tE5A9LpApigX literal 0 HcmV?d00001 diff --git a/localization/es/typeobjectpattern/README.md b/localization/es/typeobjectpattern/README.md new file mode 100644 index 000000000..3c5d1d518 --- /dev/null +++ b/localization/es/typeobjectpattern/README.md @@ -0,0 +1,209 @@ +--- +title: Type-Object +category: Behavioral +language: es +tag: + - Game programming + - Extensibility +--- + +## Propósito +Como se explica en el libro Game Programming Patterns de Robert Nystrom, el patrón objeto tipo ayuda a + +> Permitir la creación flexible de nuevas "clases" mediante la creación de una única clase, cada instancia de la cual representa un tipo diferente de objeto + +## Explicación +Ejemplo del mundo real +> Estás trabajando en un juego con muchas razas diferentes de monstruos. Cada raza de monstruo tiene diferentes valores para los atributos, como ataque, salud, inteligencia, etc. Quieres crear nuevas razas de monstruos, o modificar los atributos de una raza existente, sin necesidad de modificar el código y recompilar el juego. + +En palabras sencillas +> Definimos una clase de objeto de tipo y una clase de objeto tipado. Damos a cada instancia de objeto de tipo una referencia a un objeto tipado, que contiene la información para ese tipo. + +**Ejemplo programático** + +Supongamos que estamos desarrollando un juego de Candy Crush. Hay muchos tipos de caramelos diferentes, y es posible que queramos editar o crear nuevos con el tiempo a medida que desarrollamos el juego. + +En primer lugar, tenemos un tipo para los caramelos, con un nombre de campo, padre, puntos y Tipo. + +```java +@Getter(AccessLevel.PACKAGE) +public class Candy { + + enum Type { + CRUSHABLE_CANDY, + REWARD_FRUIT + } + + String name; + Candy parent; + String parentName; + + @Setter + private int points; + private final Type type; + + Candy(String name, String parentName, Type type, int points) { + this.name = name; + this.parent = null; + this.type = type; + this.points = points; + this.parentName = parentName; + } + +} +``` + +Los datos de campo de los tipos de caramelos se almacenan en el archivo JSON ``candy.json``. Se pueden añadir nuevos caramelos simplemente añadiéndolos a este archivo. + +```json +{"candies" : [ + { + "name" : "fruit", + "parent" : "null", + "type" : "rewardFruit", + "points" : 20 + }, + { + "name" : "candy", + "parent" : "null", + "type" : "crushableCandy", + "points" : 10 + }, + { + "name" : "cherry", + "parent" : "fruit", + "type" : "rewardFruit", + "points" : 0 + }, + { + "name" : "mango", + "parent" : "fruit", + "type" : "rewardFruit", + "points" : 0 + }, + { + "name" : "purple popsicle", + "parent" : "candy", + "type" : "crushableCandy", + "points" : 0 + }, + { + "name" : "green jellybean", + "parent" : "candy", + "type" : "crushableCandy", + "points" : 0 + }, + { + "name" : "orange gum", + "parent" : "candy", + "type" : "crushableCandy", + "points" : 0 + } + ] +} +``` + +El archivo JSON se analiza, instanciando cada tipo de caramelo y almacenándolo en una tabla hash. El campo ``type`` se compara con el enum ``Type`` definido en la clase Candy. + +```java +public class JsonParser { + Hashtable candies; + + JsonParser() { + this.candies = new Hashtable<>(); + } + + void parse() throws JsonParseException { + var is = this.getClass().getClassLoader().getResourceAsStream("candy.json"); + var reader = new InputStreamReader(is); + var json = (JsonObject) com.google.gson.JsonParser.parseReader(reader); + var array = (JsonArray) json.get("candies"); + for (var item : array) { + var candy = (JsonObject) item; + var name = candy.get("name").getAsString(); + var parentName = candy.get("parent").getAsString(); + var t = candy.get("type").getAsString(); + var type = Type.CRUSHABLE_CANDY; + if (t.equals("rewardFruit")) { + type = Type.REWARD_FRUIT; + } + var points = candy.get("points").getAsInt(); + var c = new Candy(name, parentName, type, points); + this.candies.put(name, c); + } + setParentAndPoints(); + } + + void setParentAndPoints() { + for (var e = this.candies.keys(); e.hasMoreElements(); ) { + var c = this.candies.get(e.nextElement()); + if (c.parentName == null) { + c.parent = null; + } else { + c.parent = this.candies.get(c.parentName); + } + if (c.getPoints() == 0 && c.parent != null) { + c.setPoints(c.parent.getPoints()); + } + } + } +} +``` + +## En palabras sencillas + +El patrón Tipo-Objeto en Java es un método para encapsular propiedades y comportamientos específicos de un tipo dentro de un objeto. Este patrón de diseño facilita la adición de nuevos tipos sin necesidad de realizar cambios en el código existente, mejorando así la expansión y el mantenimiento de la base de código. + +## Wikipedia dice + +Aunque no existe una entrada específica en Wikipedia para el patrón Tipo-Objeto, se trata de una técnica de uso común en la programación orientada a objetos. Este patrón ayuda a gestionar objetos que comparten características similares pero tienen valores diferentes para esas características. Su uso está muy extendido en el desarrollo de juegos, donde numerosos tipos de objetos (como los enemigos) comparten un comportamiento común pero tienen propiedades diferentes. + +## Ejemplo programático + +Consideremos un ejemplo en el que intervienen distintos tipos de enemigos en un juego. Cada tipo de enemigo tiene propiedades distintas, como velocidad, salud y daño. + +```java +public class EnemyType { + private String name; + private int speed; + private int health; + private int damage; + + public EnemyType(String name, int speed, int health, int damage) { + this.name = name; + this.speed = speed; + this.health = health; + this.damage = damage; + } + + // getters and setters +} + +public class Enemy { + private EnemyType type; + + // Encapsulating type information in an object + public Enemy(EnemyType type) { + this.type = type; + } + + // other methods +} +``` + +En el ejemplo anterior, `EnemyType` encapsula propiedades específicas del tipo (nombre, velocidad, salud, daño), y `Enemy` utiliza una instancia de `EnemyType` para definir su tipo. De esta forma, puedes añadir tantos tipos de enemigos como quieras sin modificar la clase "Enemigo". + +## Aplicabilidad +Este patrón puede utilizarse cuando: + +* No sabemos de antemano qué tipos vamos a necesitar. +* Queremos ser capaces de modificar o añadir nuevos tipos sin tener que recompilar o cambiar el código. +* La única diferencia entre los diferentes "tipos" de objetos son los datos, no el comportamiento. + +## Otro ejemplo con diagrama de clases +![alt text](./etc/typeobjectpattern.urm.png "Type-Object pattern class diagram") + +## Créditos + +* [Game Programming Patterns - Type Object](http://gameprogrammingpatterns.com/type-object.html) +* [Types as Objects Pattern](http://www.cs.sjsu.edu/~pearce/modules/patterns/analysis/top.htm) diff --git a/localization/es/typeobjectpattern/etc/typeobjectpattern.urm.png b/localization/es/typeobjectpattern/etc/typeobjectpattern.urm.png new file mode 100644 index 0000000000000000000000000000000000000000..477dac5f2a2e667db112fd2231d9731f372f6ef3 GIT binary patch literal 67712 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 y&(~l-=oUzET~csU89WC%2^Etr;TsUB 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 Considere una estructura de árbol con unidades del ejército. El comandante tiene dos sargentos bajo él y cada sargento +> tiene tres soldados bajo él. Dado que la jerarquía implementa el patrón visitante, podemos +> crear fácilmente nuevos objetos que interactúen con el comandante, los sargentos, los soldados, o todos ellos. + + +Ejemplo del mundo real + +> El patrón Visitante define las operaciones que se pueden realizar en los nodos de la estructura de datos. + +Wikipedia dice + +> En programación orientada a objetos e ingeniería de software, el patrón de diseño visitante es una forma de +> separar un algoritmo de una estructura de objetos sobre la que opera. Un resultado práctico de esta +> separación es la capacidad de añadir nuevas operaciones a estructuras de objetos existentes sin modificarlas. +> las estructuras. + +**Ejemplo programático** + +Dado el ejemplo anterior de la unidad del ejército, primero tenemos los tipos básicos Unit y UnitVisitor. + +```java +public abstract class Unit { + + private final Unit[] children; + + public Unit(Unit... children) { + this.children = children; + } + + public void accept(UnitVisitor visitor) { + Arrays.stream(children).forEach(child -> child.accept(visitor)); + } +} + +public interface UnitVisitor { + + void visit(Soldier soldier); + + void visit(Sergeant sergeant); + + void visit(Commander commander); +} +``` + +Luego tenemos las unidades de hormigón. + +```java +public class Commander extends Unit { + + public Commander(Unit... children) { + super(children); + } + + @Override + public void accept(UnitVisitor visitor) { + visitor.visit(this); + super.accept(visitor); + } + + @Override + public String toString() { + return "commander"; + } +} + +public class Sergeant extends Unit { + + public Sergeant(Unit... children) { + super(children); + } + + @Override + public void accept(UnitVisitor visitor) { + visitor.visit(this); + super.accept(visitor); + } + + @Override + public String toString() { + return "sergeant"; + } +} + +public class Soldier extends Unit { + + public Soldier(Unit... children) { + super(children); + } + + @Override + public void accept(UnitVisitor visitor) { + visitor.visit(this); + super.accept(visitor); + } + + @Override + public String toString() { + return "soldier"; + } +} +``` + +He aquí, pues, algunos visitantes concretos. + +```java +@Slf4j +public class CommanderVisitor implements UnitVisitor { + + @Override + public void visit(Soldier soldier) { + // Do nothing + } + + @Override + public void visit(Sergeant sergeant) { + // Do nothing + } + + @Override + public void visit(Commander commander) { + LOGGER.info("Good to see you {}", commander); + } +} + +@Slf4j +public class SergeantVisitor implements UnitVisitor { + + @Override + public void visit(Soldier soldier) { + // Do nothing + } + + @Override + public void visit(Sergeant sergeant) { + LOGGER.info("Hello {}", sergeant); + } + + @Override + public void visit(Commander commander) { + // Do nothing + } +} + +@Slf4j +public class SoldierVisitor implements UnitVisitor { + + @Override + public void visit(Soldier soldier) { + LOGGER.info("Greetings {}", soldier); + } + + @Override + public void visit(Sergeant sergeant) { + // Do nothing + } + + @Override + public void visit(Commander commander) { + // Do nothing + } +} +``` + +Por último, podemos mostrar el poder de los visitantes en acción. + +```java +commander.accept(new SoldierVisitor()); +commander.accept(new SergeantVisitor()); +commander.accept(new CommanderVisitor()); +``` + +Salida del programa: + +``` +Greetings soldier +Greetings soldier +Greetings soldier +Greetings soldier +Greetings soldier +Greetings soldier +Hello sergeant +Hello sergeant +Good to see you commander +``` + +## Diagrama de clases + +![alt text](./etc/visitor_1.png "Visitor") + +## Aplicabilidad + +Utilice el patrón Visitor cuando + +* Una estructura de objetos contiene muchas clases de objetos con diferentes interfaces, y desea realizar operaciones en estos objetos que dependen de sus clases concretas. +* Es necesario realizar muchas operaciones distintas y no relacionadas en los objetos de una estructura de objetos, y se desea evitar "contaminar" sus clases con estas operaciones. Visitor permite mantener juntas las operaciones relacionadas definiéndolas en una clase. Cuando la estructura de objetos es compartida por muchas aplicaciones, utilice Visitor para poner las operaciones sólo en aquellas aplicaciones que las necesiten. +* Las clases que definen la estructura del objeto raramente cambian, pero a menudo se quieren definir nuevas operaciones sobre la estructura. Cambiar las clases de la estructura del objeto requiere redefinir la interfaz para todos los visitantes, lo que es potencialmente costoso. Si las clases de la estructura del objeto cambian a menudo, probablemente sea mejor definir las operaciones en esas clases. + +## Tutoriales + +* [Refactoring Guru](https://refactoring.guru/design-patterns/visitor) +* [Dzone](https://dzone.com/articles/design-patterns-visitor) +* [Sourcemaking](https://sourcemaking.com/design_patterns/visitor) + +## Usos conocidos + +* [Apache Wicket](https://github.com/apache/wicket) component tree, Mire [MarkupContainer](https://github.com/apache/wicket/blob/b60ec64d0b50a611a9549809c9ab216f0ffa3ae3/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java) +* [javax.lang.model.element.AnnotationValue](http://docs.oracle.com/javase/8/docs/api/javax/lang/model/element/AnnotationValue.html) y [AnnotationValueVisitor](http://docs.oracle.com/javase/8/docs/api/javax/lang/model/element/AnnotationValueVisitor.html) +* [javax.lang.model.element.Element](http://docs.oracle.com/javase/8/docs/api/javax/lang/model/element/Element.html) y [Element Visitor](http://docs.oracle.com/javase/8/docs/api/javax/lang/model/element/ElementVisitor.html) +* [java.nio.file.FileVisitor](http://docs.oracle.com/javase/8/docs/api/java/nio/file/FileVisitor.html) + +## Créditos + +* [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/gp/product/0201633612/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0201633612&linkCode=as2&tag=javadesignpat-20&linkId=675d49790ce11db99d90bde47f1aeb59) +* [Head First Design Patterns: A Brain-Friendly Guide](https://www.amazon.com/gp/product/0596007124/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0596007124&linkCode=as2&tag=javadesignpat-20&linkId=6b8b6eea86021af6c8e3cd3fc382cb5b) +* [Refactoring to Patterns](https://www.amazon.com/gp/product/0321213351/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0321213351&linkCode=as2&tag=javadesignpat-20&linkId=2a76fcb387234bc71b1c61150b3cc3a7) diff --git a/localization/es/visitor/etc/visitor.png b/localization/es/visitor/etc/visitor.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbee60eeabf0d474e4cad4c09249c5947abe593 GIT binary patch literal 22790 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 literal 0 HcmV?d00001 diff --git a/localization/es/visitor/etc/visitor_1.png b/localization/es/visitor/etc/visitor_1.png new file mode 100644 index 0000000000000000000000000000000000000000..de5285d7fdc36722b8ffac4190f25ba7427feb02 GIT binary patch literal 47078 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

    dT_9 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 WkM_vCm+q&L|HsH)kja!XaQ_$hI!I&y literal 0 HcmV?d00001