docs: balking, bloc, bridge diagrams

This commit is contained in:
Ilkka Seppälä
2025-04-06 08:27:22 +03:00
parent 9ca63fce83
commit 25f7bc6fea
6 changed files with 12 additions and 4 deletions
+4
View File
@@ -29,6 +29,10 @@ Wikipedia says
> The balking pattern is a software design pattern that only executes an action on an object when the object is in a particular state. For example, if an object reads ZIP files and a calling method invokes a get method on the object when the ZIP file is not open, the object would "balk" at the request.
Flowchart
![Balking flowchart](./etc/balking-flowchart.png)
## Programmatic Example of Balking Pattern in Java
This example demonstrates the Balking Pattern in a multithreaded Java application, highlighting state management and concurrency control. The Balking Pattern is exemplified by a washing machine's start button that initiates washing only if the machine is idle. This ensures state management and prevents concurrent issues.
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

+4
View File
@@ -35,6 +35,10 @@ The Bloc pattern manages the state of an object and allows for dynamically notif
> While not a formalized "Gang of Four" design pattern, Bloc is widely used in state-driven applications. It centralizes state management and propagates state changes to registered observers, following principles of separation of concerns.
### Sequence diagram
![Bloc sequence diagram](./etc/bloc-sequence-diagram.png)
---
## Programmatic Example of the Bloc Pattern in Java
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

+4 -4
View File
@@ -36,6 +36,10 @@ Wikipedia says
> The bridge pattern is a design pattern used in software engineering that is meant to "decouple an abstraction from its implementation so that the two can vary independently"
Sequence diagram
![Bridge sequence diagram](./etc/bridge-sequence-diagram.png)
## Programmatic Example of Bridge Pattern in Java
Imagine you have a weapon that can have various enchantments, and you need to combine different weapons with different enchantments. How would you handle this? Would you create multiple copies of each weapon, each with a different enchantment, or would you create separate enchantments and apply them to the weapon as needed? The Bridge pattern enables you to do the latter.
@@ -203,10 +207,6 @@ The hammer is unwielded.
The item's glow fades.
```
## Bridge Pattern Class Diagram
![Bridge](./etc/bridge.urm.png "Bridge class diagram")
## When to Use the Bridge Pattern in Java
Consider using the Bridge pattern when:
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB