From 7ac468db20bb69492b91d741a2cfc1755c2b2841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Mon, 22 Mar 2021 08:34:56 +0200 Subject: [PATCH 1/3] docs: #590 refactor and add explanation for business delegate (#1686) Type: docs and refactoring Co-authored-by: Subhrodip Mohanta --- business-delegate/README.md | 143 +++++++++++++++++- business-delegate/etc/business-delegate.png | Bin 24283 -> 0 bytes business-delegate/etc/business-delegate.ucls | 136 ----------------- .../etc/business-delegate.urm.png | Bin 0 -> 50060 bytes .../etc/business-delegate.urm.puml | 61 +++----- .../com/iluwatar/business/delegate/App.java | 22 ++- .../business/delegate/BusinessDelegate.java | 18 +-- .../business/delegate/BusinessLookup.java | 17 ++- .../{Client.java => MobileClient.java} | 10 +- .../{EjbService.java => NetflixService.java} | 6 +- .../business/delegate/ServiceType.java | 33 ---- ...ervice.java => VideoStreamingService.java} | 4 +- .../{JmsService.java => YouTubeService.java} | 6 +- .../delegate/BusinessDelegateTest.java | 47 +++--- 14 files changed, 220 insertions(+), 283 deletions(-) delete mode 100644 business-delegate/etc/business-delegate.png delete mode 100644 business-delegate/etc/business-delegate.ucls create mode 100644 business-delegate/etc/business-delegate.urm.png rename business-delegate/src/main/java/com/iluwatar/business/delegate/{Client.java => MobileClient.java} (84%) rename business-delegate/src/main/java/com/iluwatar/business/delegate/{EjbService.java => NetflixService.java} (89%) delete mode 100644 business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java rename business-delegate/src/main/java/com/iluwatar/business/delegate/{BusinessService.java => VideoStreamingService.java} (92%) rename business-delegate/src/main/java/com/iluwatar/business/delegate/{JmsService.java => YouTubeService.java} (89%) diff --git a/business-delegate/README.md b/business-delegate/README.md index b00c67819..886781632 100644 --- a/business-delegate/README.md +++ b/business-delegate/README.md @@ -9,21 +9,156 @@ tags: --- ## Intent + The Business Delegate pattern adds an abstraction layer between presentation and business tiers. By using the pattern we gain loose coupling between the tiers and encapsulate knowledge about how to locate, connect to, and interact with the business objects that make up the application. +## Explanation + +Real world example + +> A mobile phone application promises to stream any movie in existence to your phone. It captures +> the user's search string and passes this on to the business delegate. The business delegate +> selects the most suitable video streaming service and plays the video from there. + +In Plain Words + +> Business delegate adds an abstraction layer between the presentation and business tiers. + +Wikipedia says + +> Business delegate is a Java EE design pattern. This pattern is directing to reduce the coupling +> in between business services and the connected presentation tier, and to hide the implementation +> details of services (including lookup and accessibility of EJB architecture). Business delegates +> acts as an adaptor to invoke business objects from the presentation tier. + +**Programmatic Example** + +First, we have an abstraction for video streaming services and a couple of implementations. + +```java +public interface VideoStreamingService { + void doProcessing(); +} + +@Slf4j +public class NetflixService implements VideoStreamingService { + @Override + public void doProcessing() { + LOGGER.info("NetflixService is now processing"); + } +} + +@Slf4j +public class YouTubeService implements VideoStreamingService { + @Override + public void doProcessing() { + LOGGER.info("YouTubeService is now processing"); + } +} +``` + +Then we have a lookup service that decides which video streaming service is used. + +```java +@Setter +public class BusinessLookup { + + private NetflixService netflixService; + private YouTubeService youTubeService; + + public VideoStreamingService getBusinessService(String movie) { + if (movie.toLowerCase(Locale.ROOT).contains("die hard")) { + return netflixService; + } else { + return youTubeService; + } + } +} +``` + +The business delegate uses a business lookup to route movie playback requests to a suitable +video streaming service. + +```java +@Setter +public class BusinessDelegate { + + private BusinessLookup lookupService; + + public void playbackMovie(String movie) { + VideoStreamingService videoStreamingService = lookupService.getBusinessService(movie); + videoStreamingService.doProcessing(); + } +} +``` + +The mobile client utilizes business delegate to call the business tier. + +```java +public class MobileClient { + + private final BusinessDelegate businessDelegate; + + public MobileClient(BusinessDelegate businessDelegate) { + this.businessDelegate = businessDelegate; + } + + public void playbackMovie(String movie) { + businessDelegate.playbackMovie(movie); + } +} +``` + +Finally, we can show the full example in action. + +```java + public static void main(String[] args) { + + // prepare the objects + var businessDelegate = new BusinessDelegate(); + var businessLookup = new BusinessLookup(); + businessLookup.setNetflixService(new NetflixService()); + businessLookup.setYouTubeService(new YouTubeService()); + businessDelegate.setLookupService(businessLookup); + + // create the client and use the business delegate + var client = new MobileClient(businessDelegate); + client.playbackMovie("Die Hard 2"); + client.playbackMovie("Maradona: The Greatest Ever"); + } +``` + +Here is the console output. + +``` +21:15:33.790 [main] INFO com.iluwatar.business.delegate.NetflixService - NetflixService is now processing +21:15:33.794 [main] INFO com.iluwatar.business.delegate.YouTubeService - YouTubeService is now processing +``` + ## Class diagram -![alt text](./etc/business-delegate.png "Business Delegate") + +![alt text](./etc/business-delegate.urm.png "Business Delegate") + +## Related patterns + +* [Service locator pattern](https://java-design-patterns.com/patterns/service-locator/) ## Applicability + Use the Business Delegate pattern when -* you want loose coupling between presentation and business tiers -* you want to orchestrate calls to multiple business services -* you want to encapsulate service lookups and service calls +* You want loose coupling between presentation and business tiers +* You want to orchestrate calls to multiple business services +* You want to encapsulate service lookups and service calls + +## Tutorials + +* [Business Delegate Pattern at TutorialsPoint](https://www.tutorialspoint.com/design_pattern/business_delegate_pattern.htm) ## Credits * [J2EE Design Patterns](https://www.amazon.com/gp/product/0596004273/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0596004273&linkCode=as2&tag=javadesignpat-20&linkId=48d37c67fb3d845b802fa9b619ad8f31) +* [Core J2EE Patterns: Best Practices and Design Strategies](https://www.amazon.com/gp/product/0130648841/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=0130648841&linkId=a0100de2b28c71ede8db1757fb2b5947) diff --git a/business-delegate/etc/business-delegate.png b/business-delegate/etc/business-delegate.png deleted file mode 100644 index 928cf934645b8447540ddfb344c04220105b3db3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24283 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 diff --git a/business-delegate/etc/business-delegate.ucls b/business-delegate/etc/business-delegate.ucls deleted file mode 100644 index 668a6579e..000000000 --- a/business-delegate/etc/business-delegate.ucls +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/business-delegate/etc/business-delegate.urm.png b/business-delegate/etc/business-delegate.urm.png new file mode 100644 index 0000000000000000000000000000000000000000..4dca6c263b99ddc3898218250c4da67fc6d71314 GIT binary patch literal 50060 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

X|h62V?2|OLQYYg$LNG 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 Y%N4F4Gn;|10UDZ&q=G~`Qpfdw0UUnbEC2ui literal 0 HcmV?d00001 diff --git a/business-delegate/etc/business-delegate.urm.puml b/business-delegate/etc/business-delegate.urm.puml index 40aa2d6f0..407e3e12d 100644 --- a/business-delegate/etc/business-delegate.urm.puml +++ b/business-delegate/etc/business-delegate.urm.puml @@ -5,53 +5,42 @@ package com.iluwatar.business.delegate { + main(args : String[]) {static} } class BusinessDelegate { - - businessService : BusinessService - lookupService : BusinessLookup - - serviceType : ServiceType + BusinessDelegate() - + doTask() - + setLookupService(businessLookup : BusinessLookup) - + setServiceType(serviceType : ServiceType) + + playbackMovie(movie : String) + + setLookupService(lookupService : BusinessLookup) } class BusinessLookup { - - ejbService : EjbService - - jmsService : JmsService + - netflixService : NetflixService + - youTubeService : YouTubeService + BusinessLookup() - + getBusinessService(serviceType : ServiceType) : BusinessService - + setEjbService(ejbService : EjbService) - + setJmsService(jmsService : JmsService) + + getBusinessService(movie : String) : VideoStreamingService + + setNetflixService(netflixService : NetflixService) + + setYouTubeService(youTubeService : YouTubeService) } - interface BusinessService { + class MobileClient { + - businessDelegate : BusinessDelegate + + MobileClient(businessDelegate : BusinessDelegate) + + playbackMovie(movie : String) + } + class NetflixService { + - LOGGER : Logger {static} + + NetflixService() + + doProcessing() + } + interface VideoStreamingService { + doProcessing() {abstract} } - class Client { - - businessDelegate : BusinessDelegate - + Client(businessDelegate : BusinessDelegate) - + doTask() - } - class EjbService { + class YouTubeService { - LOGGER : Logger {static} - + EjbService() + + YouTubeService() + doProcessing() } - class JmsService { - - LOGGER : Logger {static} - + JmsService() - + doProcessing() - } - enum ServiceType { - + EJB {static} - + JMS {static} - + valueOf(name : String) : ServiceType {static} - + values() : ServiceType[] {static} - } } -BusinessLookup --> "-ejbService" EjbService -BusinessDelegate --> "-serviceType" ServiceType -Client --> "-businessDelegate" BusinessDelegate -BusinessDelegate --> "-businessService" BusinessService +BusinessLookup --> "-netflixService" NetflixService +BusinessLookup --> "-youTubeService" YouTubeService +MobileClient --> "-businessDelegate" BusinessDelegate BusinessDelegate --> "-lookupService" BusinessLookup -BusinessLookup --> "-jmsService" JmsService -EjbService ..|> BusinessService -JmsService ..|> BusinessService +NetflixService ..|> VideoStreamingService +YouTubeService ..|> VideoStreamingService @enduml \ No newline at end of file diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java index 8bd4d12c6..e87ca9c64 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/App.java @@ -33,9 +33,9 @@ package com.iluwatar.business.delegate; * retrieved through service lookups. The Business Delegate itself may contain business logic too * potentially tying together multiple service calls, exception handling, retrying etc. * - *

In this example the client ({@link Client}) utilizes a business delegate ( - * {@link BusinessDelegate}) to execute a task. The Business Delegate then selects the appropriate - * service and makes the service call. + *

In this example the client ({@link MobileClient}) utilizes a business delegate ( + * {@link BusinessDelegate}) to search for movies in video streaming services. The Business Delegate + * then selects the appropriate service and makes the service call. */ public class App { @@ -46,18 +46,16 @@ public class App { */ public static void main(String[] args) { + // prepare the objects var businessDelegate = new BusinessDelegate(); var businessLookup = new BusinessLookup(); - businessLookup.setEjbService(new EjbService()); - businessLookup.setJmsService(new JmsService()); - + businessLookup.setNetflixService(new NetflixService()); + businessLookup.setYouTubeService(new YouTubeService()); businessDelegate.setLookupService(businessLookup); - businessDelegate.setServiceType(ServiceType.EJB); - var client = new Client(businessDelegate); - client.doTask(); - - businessDelegate.setServiceType(ServiceType.JMS); - client.doTask(); + // create the client and use the business delegate + var client = new MobileClient(businessDelegate); + client.playbackMovie("Die Hard 2"); + client.playbackMovie("Maradona: The Greatest Ever"); } } diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java index d1255bf5f..6246145e7 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessDelegate.java @@ -23,24 +23,18 @@ package com.iluwatar.business.delegate; +import lombok.Setter; + /** * BusinessDelegate separates the presentation and business tiers. */ +@Setter public class BusinessDelegate { private BusinessLookup lookupService; - private ServiceType serviceType; - public void setLookupService(BusinessLookup businessLookup) { - this.lookupService = businessLookup; - } - - public void setServiceType(ServiceType serviceType) { - this.serviceType = serviceType; - } - - public void doTask() { - BusinessService businessService = lookupService.getBusinessService(serviceType); - businessService.doProcessing(); + public void playbackMovie(String movie) { + VideoStreamingService videoStreamingService = lookupService.getBusinessService(movie); + videoStreamingService.doProcessing(); } } diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java index 07ad6342e..0369c04e8 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessLookup.java @@ -23,6 +23,7 @@ package com.iluwatar.business.delegate; +import java.util.Locale; import lombok.Setter; /** @@ -31,21 +32,21 @@ import lombok.Setter; @Setter public class BusinessLookup { - private EjbService ejbService; + private NetflixService netflixService; - private JmsService jmsService; + private YouTubeService youTubeService; /** - * Gets service instance based on service type. + * Gets service instance based on given movie search string. * - * @param serviceType Type of service instance to be returned. + * @param movie Search string for the movie. * @return Service instance. */ - public BusinessService getBusinessService(ServiceType serviceType) { - if (serviceType.equals(ServiceType.EJB)) { - return ejbService; + public VideoStreamingService getBusinessService(String movie) { + if (movie.toLowerCase(Locale.ROOT).contains("die hard")) { + return netflixService; } else { - return jmsService; + return youTubeService; } } } diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/Client.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/MobileClient.java similarity index 84% rename from business-delegate/src/main/java/com/iluwatar/business/delegate/Client.java rename to business-delegate/src/main/java/com/iluwatar/business/delegate/MobileClient.java index 4d5c151e3..2cfb6f344 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/Client.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/MobileClient.java @@ -24,17 +24,17 @@ package com.iluwatar.business.delegate; /** - * Client utilizes BusinessDelegate to call the business tier. + * MobileClient utilizes BusinessDelegate to call the business tier. */ -public class Client { +public class MobileClient { private final BusinessDelegate businessDelegate; - public Client(BusinessDelegate businessDelegate) { + public MobileClient(BusinessDelegate businessDelegate) { this.businessDelegate = businessDelegate; } - public void doTask() { - businessDelegate.doTask(); + public void playbackMovie(String movie) { + businessDelegate.playbackMovie(movie); } } diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/EjbService.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/NetflixService.java similarity index 89% rename from business-delegate/src/main/java/com/iluwatar/business/delegate/EjbService.java rename to business-delegate/src/main/java/com/iluwatar/business/delegate/NetflixService.java index 6813dfec1..ae9da8747 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/EjbService.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/NetflixService.java @@ -26,13 +26,13 @@ package com.iluwatar.business.delegate; import lombok.extern.slf4j.Slf4j; /** - * Service EJB implementation. + * NetflixService implementation. */ @Slf4j -public class EjbService implements BusinessService { +public class NetflixService implements VideoStreamingService { @Override public void doProcessing() { - LOGGER.info("EjbService is now processing"); + LOGGER.info("NetflixService is now processing"); } } diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java deleted file mode 100644 index 503f30797..000000000 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/ServiceType.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * The MIT License - * Copyright © 2014-2021 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.iluwatar.business.delegate; - -/** - * Enumeration for service types. - */ -public enum ServiceType { - - EJB, - JMS -} diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessService.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/VideoStreamingService.java similarity index 92% rename from business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessService.java rename to business-delegate/src/main/java/com/iluwatar/business/delegate/VideoStreamingService.java index 20845841f..3c8b7e3fb 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/BusinessService.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/VideoStreamingService.java @@ -24,9 +24,9 @@ package com.iluwatar.business.delegate; /** - * Interface for service implementations. + * Interface for video streaming service implementations. */ -public interface BusinessService { +public interface VideoStreamingService { void doProcessing(); } diff --git a/business-delegate/src/main/java/com/iluwatar/business/delegate/JmsService.java b/business-delegate/src/main/java/com/iluwatar/business/delegate/YouTubeService.java similarity index 89% rename from business-delegate/src/main/java/com/iluwatar/business/delegate/JmsService.java rename to business-delegate/src/main/java/com/iluwatar/business/delegate/YouTubeService.java index 932c5038d..aa79e7309 100644 --- a/business-delegate/src/main/java/com/iluwatar/business/delegate/JmsService.java +++ b/business-delegate/src/main/java/com/iluwatar/business/delegate/YouTubeService.java @@ -26,13 +26,13 @@ package com.iluwatar.business.delegate; import lombok.extern.slf4j.Slf4j; /** - * Service JMS implementation. + * YouTubeService implementation. */ @Slf4j -public class JmsService implements BusinessService { +public class YouTubeService implements VideoStreamingService { @Override public void doProcessing() { - LOGGER.info("JmsService is now processing"); + LOGGER.info("YouTubeService is now processing"); } } diff --git a/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java b/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java index b59759328..8cd5e2021 100644 --- a/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java +++ b/business-delegate/src/test/java/com/iluwatar/business/delegate/BusinessDelegateTest.java @@ -26,25 +26,20 @@ package com.iluwatar.business.delegate; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; + +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; /** - * The Business Delegate pattern adds an abstraction layer between the presentation and business - * tiers. By using the pattern we gain loose coupling between the tiers. The Business Delegate - * encapsulates knowledge about how to locate, connect to, and interact with the business objects - * that make up the application. - * - *

Some of the services the Business Delegate uses are instantiated directly, and some can be - * retrieved through service lookups. The Business Delegate itself may contain business logic too - * potentially tying together multiple service calls, exception handling, retrying etc. + * Tests for the {@link BusinessDelegate} */ class BusinessDelegateTest { - private EjbService ejbService; + private NetflixService netflixService; - private JmsService jmsService; + private YouTubeService youTubeService; private BusinessDelegate businessDelegate; @@ -54,19 +49,19 @@ class BusinessDelegateTest { */ @BeforeEach public void setup() { - ejbService = spy(new EjbService()); - jmsService = spy(new JmsService()); + netflixService = spy(new NetflixService()); + youTubeService = spy(new YouTubeService()); BusinessLookup businessLookup = spy(new BusinessLookup()); - businessLookup.setEjbService(ejbService); - businessLookup.setJmsService(jmsService); + businessLookup.setNetflixService(netflixService); + businessLookup.setYouTubeService(youTubeService); businessDelegate = spy(new BusinessDelegate()); businessDelegate.setLookupService(businessLookup); } /** - * In this example the client ({@link Client}) utilizes a business delegate ( + * In this example the client ({@link MobileClient}) utilizes a business delegate ( * {@link BusinessDelegate}) to execute a task. The Business Delegate then selects the appropriate * service and makes the service call. */ @@ -74,26 +69,20 @@ class BusinessDelegateTest { void testBusinessDelegate() { // setup a client object - var client = new Client(businessDelegate); - - // set the service type - businessDelegate.setServiceType(ServiceType.EJB); + var client = new MobileClient(businessDelegate); // action - client.doTask(); + client.playbackMovie("Die hard"); - // verifying that the businessDelegate was used by client during doTask() method. - verify(businessDelegate).doTask(); - verify(ejbService).doProcessing(); - - // set the service type - businessDelegate.setServiceType(ServiceType.JMS); + // verifying that the businessDelegate was used by client during playbackMovie() method. + verify(businessDelegate).playbackMovie(anyString()); + verify(netflixService).doProcessing(); // action - client.doTask(); + client.playbackMovie("Maradona"); // verifying that the businessDelegate was used by client during doTask() method. - verify(businessDelegate, times(2)).doTask(); - verify(jmsService).doProcessing(); + verify(businessDelegate, times(2)).playbackMovie(anyString()); + verify(youTubeService).doProcessing(); } } From c413e0902e3c718ff84b34c1f086648d853c0789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Mon, 22 Mar 2021 08:49:46 +0200 Subject: [PATCH 2/3] docs: #590 add explanation for bytecode pattern (#1687) Type: docs and refactoring Co-authored-by: Subhrodip Mohanta --- bytecode/README.md | 224 +++++++++++++++++- bytecode/etc/bytecode.png | Bin 19866 -> 0 bytes bytecode/etc/bytecode.ucls | 49 ---- bytecode/etc/bytecode.urm.png | Bin 68283 -> 86123 bytes bytecode/etc/bytecode.urm.puml | 10 +- .../main/java/com/iluwatar/bytecode/App.java | 42 ++-- .../com/iluwatar/bytecode/Instruction.java | 22 +- .../com/iluwatar/bytecode/VirtualMachine.java | 26 +- .../java/com/iluwatar/bytecode/Wizard.java | 5 +- .../util/InstructionConverterUtil.java | 2 - 10 files changed, 277 insertions(+), 103 deletions(-) delete mode 100644 bytecode/etc/bytecode.png delete mode 100644 bytecode/etc/bytecode.ucls diff --git a/bytecode/README.md b/bytecode/README.md index ee3f96ed8..115f0b96a 100644 --- a/bytecode/README.md +++ b/bytecode/README.md @@ -9,18 +9,234 @@ tags: --- ## Intent -Allows to encode behaviour as instructions for virtual machine. + +Allows encoding behavior as instructions for a virtual machine. + +## Explanation + +Real world example + +> A team is working on a new game where wizards battle against each other. The wizard behavior +> needs to be carefully adjusted and iterated hundreds of times through playtesting. It's not +> optimal to ask the programmer to make changes each time the game designer wants to vary the +> behavior, so the wizard behavior is implemented as a data-driven virtual machine. + +In plain words + +> Bytecode pattern enables behavior driven by data instead of code. + +[Gameprogrammingpatterns.com](https://gameprogrammingpatterns.com/bytecode.html) documentation +states: + +> An instruction set defines the low-level operations that can be performed. A series of +> instructions is encoded as a sequence of bytes. A virtual machine executes these instructions one +> at a time, using a stack for intermediate values. By combining instructions, complex high-level +> behavior can be defined. + +**Programmatic Example** + +One of the most important game objects is the `Wizard` class. + +```java +@AllArgsConstructor +@Setter +@Getter +@Slf4j +public class Wizard { + + private int health; + private int agility; + private int wisdom; + private int numberOfPlayedSounds; + private int numberOfSpawnedParticles; + + public void playSound() { + LOGGER.info("Playing sound"); + numberOfPlayedSounds++; + } + + public void spawnParticles() { + LOGGER.info("Spawning particles"); + numberOfSpawnedParticles++; + } +} +``` + +Next, we show the available instructions for our virtual machine. Each of the instructions has its +own semantics on how it operates with the stack data. For example, the ADD instruction takes the top +two items from the stack, adds them together and pushes the result to the stack. + +```java +@AllArgsConstructor +@Getter +public enum Instruction { + + LITERAL(1), // e.g. "LITERAL 0", push 0 to stack + SET_HEALTH(2), // e.g. "SET_HEALTH", pop health and wizard number, call set health + SET_WISDOM(3), // e.g. "SET_WISDOM", pop wisdom and wizard number, call set wisdom + SET_AGILITY(4), // e.g. "SET_AGILITY", pop agility and wizard number, call set agility + PLAY_SOUND(5), // e.g. "PLAY_SOUND", pop value as wizard number, call play sound + SPAWN_PARTICLES(6), // e.g. "SPAWN_PARTICLES", pop value as wizard number, call spawn particles + GET_HEALTH(7), // e.g. "GET_HEALTH", pop value as wizard number, push wizard's health + GET_AGILITY(8), // e.g. "GET_AGILITY", pop value as wizard number, push wizard's agility + GET_WISDOM(9), // e.g. "GET_WISDOM", pop value as wizard number, push wizard's wisdom + ADD(10), // e.g. "ADD", pop 2 values, push their sum + DIVIDE(11); // e.g. "DIVIDE", pop 2 values, push their division + // ... +} +``` + +At the heart of our example is the `VirtualMachine` class. It takes instructions as input and +executes them to provide the game object behavior. + +```java +@Getter +@Slf4j +public class VirtualMachine { + + private final Stack stack = new Stack<>(); + + private final Wizard[] wizards = new Wizard[2]; + + public VirtualMachine() { + wizards[0] = new Wizard(randomInt(3, 32), randomInt(3, 32), randomInt(3, 32), + 0, 0); + wizards[1] = new Wizard(randomInt(3, 32), randomInt(3, 32), randomInt(3, 32), + 0, 0); + } + + public VirtualMachine(Wizard wizard1, Wizard wizard2) { + wizards[0] = wizard1; + wizards[1] = wizard2; + } + + public void execute(int[] bytecode) { + for (var i = 0; i < bytecode.length; i++) { + Instruction instruction = Instruction.getInstruction(bytecode[i]); + switch (instruction) { + case LITERAL: + // Read the next byte from the bytecode. + int value = bytecode[++i]; + // Push the next value to stack + stack.push(value); + break; + case SET_AGILITY: + var amount = stack.pop(); + var wizard = stack.pop(); + setAgility(wizard, amount); + break; + case SET_WISDOM: + amount = stack.pop(); + wizard = stack.pop(); + setWisdom(wizard, amount); + break; + case SET_HEALTH: + amount = stack.pop(); + wizard = stack.pop(); + setHealth(wizard, amount); + break; + case GET_HEALTH: + wizard = stack.pop(); + stack.push(getHealth(wizard)); + break; + case GET_AGILITY: + wizard = stack.pop(); + stack.push(getAgility(wizard)); + break; + case GET_WISDOM: + wizard = stack.pop(); + stack.push(getWisdom(wizard)); + break; + case ADD: + var a = stack.pop(); + var b = stack.pop(); + stack.push(a + b); + break; + case DIVIDE: + a = stack.pop(); + b = stack.pop(); + stack.push(b / a); + break; + case PLAY_SOUND: + wizard = stack.pop(); + getWizards()[wizard].playSound(); + break; + case SPAWN_PARTICLES: + wizard = stack.pop(); + getWizards()[wizard].spawnParticles(); + break; + default: + throw new IllegalArgumentException("Invalid instruction value"); + } + LOGGER.info("Executed " + instruction.name() + ", Stack contains " + getStack()); + } + } + + public void setHealth(int wizard, int amount) { + wizards[wizard].setHealth(amount); + } + // other setters -> + // ... +} +``` + +Now we can show the full example utilizing the virtual machine. + +```java + public static void main(String[] args) { + + var vm = new VirtualMachine( + new Wizard(45, 7, 11, 0, 0), + new Wizard(36, 18, 8, 0, 0)); + + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("GET_HEALTH")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("GET_AGILITY")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("GET_WISDOM")); + vm.execute(InstructionConverterUtil.convertToByteCode("ADD")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 2")); + vm.execute(InstructionConverterUtil.convertToByteCode("DIVIDE")); + vm.execute(InstructionConverterUtil.convertToByteCode("ADD")); + vm.execute(InstructionConverterUtil.convertToByteCode("SET_HEALTH")); + } +``` + +Here is the console output. + +``` +16:20:10.193 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed LITERAL, Stack contains [0] +16:20:10.196 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed LITERAL, Stack contains [0, 0] +16:20:10.197 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed GET_HEALTH, Stack contains [0, 45] +16:20:10.197 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed LITERAL, Stack contains [0, 45, 0] +16:20:10.197 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed GET_AGILITY, Stack contains [0, 45, 7] +16:20:10.197 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed LITERAL, Stack contains [0, 45, 7, 0] +16:20:10.197 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed GET_WISDOM, Stack contains [0, 45, 7, 11] +16:20:10.197 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed ADD, Stack contains [0, 45, 18] +16:20:10.197 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed LITERAL, Stack contains [0, 45, 18, 2] +16:20:10.198 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed DIVIDE, Stack contains [0, 45, 9] +16:20:10.198 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed ADD, Stack contains [0, 54] +16:20:10.198 [main] INFO com.iluwatar.bytecode.VirtualMachine - Executed SET_HEALTH, Stack contains [] +``` ## Class diagram + ![alt text](./etc/bytecode.urm.png "Bytecode class diagram") ## Applicability + Use the Bytecode pattern when you have a lot of behavior you need to define and your game’s implementation language isn’t a good fit because: -* it’s too low-level, making it tedious or error-prone to program in. -* iterating on it takes too long due to slow compile times or other tooling issues. -* it has too much trust. If you want to ensure the behavior being defined can’t break the game, you need to sandbox it from the rest of the codebase. +* It’s too low-level, making it tedious or error-prone to program in. +* Iterating on it takes too long due to slow compile times or other tooling issues. +* It has too much trust. If you want to ensure the behavior being defined can’t break the game, you need to sandbox it from the rest of the codebase. + +## Related patterns + +* [Interpreter](https://java-design-patterns.com/patterns/interpreter/) ## Credits diff --git a/bytecode/etc/bytecode.png b/bytecode/etc/bytecode.png deleted file mode 100644 index 31b6bc6edba64cfb51910e5d2c5322be46e7c075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19866 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

`G1h3pdcwAMtsKKi=qQrS$#qHo8o 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 D@r6J8 diff --git a/bytecode/etc/bytecode.ucls b/bytecode/etc/bytecode.ucls deleted file mode 100644 index 3ec390458..000000000 --- a/bytecode/etc/bytecode.ucls +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/bytecode/etc/bytecode.urm.png b/bytecode/etc/bytecode.urm.png index 82036a78a9b1f87bc89556c63fa401ab3a9d99a6..51335fa0a4b40a73957b56e79805aa9aed7e4cd1 100644 GIT binary patch literal 86123 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 g$fF{EFHs - wizards : Wizard[] + VirtualMachine() + + VirtualMachine(wizard1 : Wizard, wizard2 : Wizard) + execute(bytecode : int[]) + getAgility(wizard : int) : int + getHealth(wizard : int) : int + getStack() : Stack + getWisdom(wizard : int) : int + getWizards() : Wizard[] + - randomInt(min : int, max : int) : int + setAgility(wizard : int, amount : int) + setHealth(wizard : int, amount : int) + setWisdom(wizard : int, amount : int) @@ -45,7 +47,7 @@ package com.iluwatar.bytecode { - numberOfPlayedSounds : int - numberOfSpawnedParticles : int - wisdom : int - + Wizard() + + Wizard(health : int, agility : int, wisdom : int, numberOfPlayedSounds : int, numberOfSpawnedParticles : int) + getAgility() : int + getHealth() : int + getNumberOfPlayedSounds() : int @@ -54,6 +56,8 @@ package com.iluwatar.bytecode { + playSound() + setAgility(agility : int) + setHealth(health : int) + + setNumberOfPlayedSounds(numberOfPlayedSounds : int) + + setNumberOfSpawnedParticles(numberOfSpawnedParticles : int) + setWisdom(wisdom : int) + spawnParticles() } diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/App.java b/bytecode/src/main/java/com/iluwatar/bytecode/App.java index 4d41fe6b9..f76a8e6a4 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/App.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/App.java @@ -49,33 +49,21 @@ public class App { */ public static void main(String[] args) { - var wizard = new Wizard(); - wizard.setHealth(45); - wizard.setAgility(7); - wizard.setWisdom(11); + var vm = new VirtualMachine( + new Wizard(45, 7, 11, 0, 0), + new Wizard(36, 18, 8, 0, 0)); - var vm = new VirtualMachine(); - vm.getWizards()[0] = wizard; - - String literal = "LITERAL 0"; - - interpretInstruction(literal, vm); - interpretInstruction(literal, vm); - interpretInstruction("GET_HEALTH", vm); - interpretInstruction(literal, vm); - interpretInstruction("GET_AGILITY", vm); - interpretInstruction(literal, vm); - interpretInstruction("GET_WISDOM ", vm); - interpretInstruction("ADD", vm); - interpretInstruction("LITERAL 2", vm); - interpretInstruction("DIVIDE", vm); - interpretInstruction("ADD", vm); - interpretInstruction("SET_HEALTH", vm); - } - - private static void interpretInstruction(String instruction, VirtualMachine vm) { - vm.execute(InstructionConverterUtil.convertToByteCode(instruction)); - var stack = vm.getStack(); - LOGGER.info(instruction + String.format("%" + (12 - instruction.length()) + "s", "") + stack); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("GET_HEALTH")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("GET_AGILITY")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); + vm.execute(InstructionConverterUtil.convertToByteCode("GET_WISDOM")); + vm.execute(InstructionConverterUtil.convertToByteCode("ADD")); + vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 2")); + vm.execute(InstructionConverterUtil.convertToByteCode("DIVIDE")); + vm.execute(InstructionConverterUtil.convertToByteCode("ADD")); + vm.execute(InstructionConverterUtil.convertToByteCode("SET_HEALTH")); } } diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java b/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java index 52b6e325a..ad16fb7f2 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/Instruction.java @@ -33,17 +33,17 @@ import lombok.Getter; @Getter public enum Instruction { - LITERAL(1), - SET_HEALTH(2), - SET_WISDOM(3), - SET_AGILITY(4), - PLAY_SOUND(5), - SPAWN_PARTICLES(6), - GET_HEALTH(7), - GET_AGILITY(8), - GET_WISDOM(9), - ADD(10), - DIVIDE(11); + LITERAL(1), // e.g. "LITERAL 0", push 0 to stack + SET_HEALTH(2), // e.g. "SET_HEALTH", pop health and wizard number, call set health + SET_WISDOM(3), // e.g. "SET_WISDOM", pop wisdom and wizard number, call set wisdom + SET_AGILITY(4), // e.g. "SET_AGILITY", pop agility and wizard number, call set agility + PLAY_SOUND(5), // e.g. "PLAY_SOUND", pop value as wizard number, call play sound + SPAWN_PARTICLES(6), // e.g. "SPAWN_PARTICLES", pop value as wizard number, call spawn particles + GET_HEALTH(7), // e.g. "GET_HEALTH", pop value as wizard number, push wizard's health + GET_AGILITY(8), // e.g. "GET_AGILITY", pop value as wizard number, push wizard's agility + GET_WISDOM(9), // e.g. "GET_WISDOM", pop value as wizard number, push wizard's wisdom + ADD(10), // e.g. "ADD", pop 2 values, push their sum + DIVIDE(11); // e.g. "DIVIDE", pop 2 values, push their division private final int intValue; diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java b/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java index 526a8a377..ee223b5d8 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/VirtualMachine.java @@ -24,12 +24,15 @@ package com.iluwatar.bytecode; import java.util.Stack; +import java.util.concurrent.ThreadLocalRandom; import lombok.Getter; +import lombok.extern.slf4j.Slf4j; /** * Implementation of virtual machine. */ @Getter +@Slf4j public class VirtualMachine { private final Stack stack = new Stack<>(); @@ -37,12 +40,21 @@ public class VirtualMachine { private final Wizard[] wizards = new Wizard[2]; /** - * Constructor. + * No-args constructor. */ public VirtualMachine() { - for (var i = 0; i < wizards.length; i++) { - wizards[i] = new Wizard(); - } + wizards[0] = new Wizard(randomInt(3, 32), randomInt(3, 32), randomInt(3, 32), + 0, 0); + wizards[1] = new Wizard(randomInt(3, 32), randomInt(3, 32), randomInt(3, 32), + 0, 0); + } + + /** + * Constructor taking the wizards as arguments. + */ + public VirtualMachine(Wizard wizard1, Wizard wizard2) { + wizards[0] = wizard1; + wizards[1] = wizard2; } /** @@ -57,6 +69,7 @@ public class VirtualMachine { case LITERAL: // Read the next byte from the bytecode. int value = bytecode[++i]; + // Push the next value to stack stack.push(value); break; case SET_AGILITY: @@ -107,6 +120,7 @@ public class VirtualMachine { default: throw new IllegalArgumentException("Invalid instruction value"); } + LOGGER.info("Executed " + instruction.name() + ", Stack contains " + getStack()); } } @@ -133,4 +147,8 @@ public class VirtualMachine { public int getAgility(int wizard) { return wizards[wizard].getAgility(); } + + private int randomInt(int min, int max) { + return ThreadLocalRandom.current().nextInt(min, max + 1); + } } diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java b/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java index 4db97f119..ce62b276a 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/Wizard.java @@ -23,6 +23,7 @@ package com.iluwatar.bytecode; +import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -31,16 +32,15 @@ import lombok.extern.slf4j.Slf4j; * This class represent game objects which properties can be changed by instructions interpreted by * virtual machine. */ +@AllArgsConstructor @Setter @Getter @Slf4j public class Wizard { private int health; - private int agility; private int wisdom; - private int numberOfPlayedSounds; private int numberOfSpawnedParticles; @@ -53,5 +53,4 @@ public class Wizard { LOGGER.info("Spawning particles"); numberOfSpawnedParticles++; } - } diff --git a/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java b/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java index 196d2b55d..ab7643129 100644 --- a/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java +++ b/bytecode/src/main/java/com/iluwatar/bytecode/util/InstructionConverterUtil.java @@ -73,6 +73,4 @@ public class InstructionConverterUtil { return false; } } - - } From b525d871b48834a12516ca33d4d7ff06510670e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Tue, 23 Mar 2021 07:59:20 +0200 Subject: [PATCH 3/3] docs: Fix mvvm readme (#1689) --- model-view-viewmodel/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/model-view-viewmodel/README.md b/model-view-viewmodel/README.md index 6df1ea5d7..928b5a06f 100644 --- a/model-view-viewmodel/README.md +++ b/model-view-viewmodel/README.md @@ -99,11 +99,11 @@ public class BookViewModel { ``` -Note: -* To deploy this, go to model-view-viewmodel folder and run: -* mvn clean install -* mvn jetty:run -Djetty.http.port=9911 -* In browser, http://localhost:9911/model-view-viewmodel/ +To deploy the example, go to model-view-viewmodel folder and run: + +* `mvn clean install` +* `mvn jetty:run -Djetty.http.port=9911` +* Open browser to address: http://localhost:9911/model-view-viewmodel/ ## Class diagram