Clean up Transaction Script
This commit is contained in:
@@ -9,11 +9,15 @@ tags:
|
||||
---
|
||||
|
||||
## Intent
|
||||
Transaction Script organizes business logic by procedures where each procedure handles a single request from the presentation.
|
||||
|
||||
Transaction Script organizes business logic by procedures where each procedure handles a single
|
||||
request from the presentation.
|
||||
|
||||
## Explanation
|
||||
|
||||
Real world example
|
||||
> You need to create a hotel room booking system. Since the requirements are quite simple we intend to use the Transaction Script pattern here.
|
||||
> You need to create a hotel room booking system. Since the requirements are quite simple we intend
|
||||
> to use the Transaction Script pattern here.
|
||||
|
||||
In plain words
|
||||
> Transaction Script organizes business logic into transactions that the system needs to carry out.
|
||||
@@ -26,7 +30,7 @@ The `Hotel` class takes care of booking and cancelling room reservations.
|
||||
public class Hotel {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
|
||||
|
||||
private HotelDaoImpl hotelDao;
|
||||
private final HotelDaoImpl hotelDao;
|
||||
|
||||
public Hotel(HotelDaoImpl hotelDao) {
|
||||
this.hotelDao = hotelDao;
|
||||
@@ -72,27 +76,33 @@ public class Hotel {
|
||||
}
|
||||
```
|
||||
|
||||
The `Hotel` class has two methods, one for booking and cancelling a room respectively. Each one of them handles a single transaction in the system, making `Hotel` implement the Transaction Script pattern.
|
||||
The `Hotel` class has two methods, one for booking and cancelling a room respectively. Each one of
|
||||
them handles a single transaction in the system, making `Hotel` implement the Transaction Script
|
||||
pattern.
|
||||
|
||||
```
|
||||
public void bookRoom(int roomNumber);
|
||||
```
|
||||
The book room method consolidates all the needed steps like checking if the room is already booked
|
||||
or not, if not booked then books the rooma nd updates the database by using the DAO.
|
||||
The `bookRoom` method consolidates all the needed steps like checking if the room is already booked
|
||||
or not, if not booked then books the room and updates the database by using the DAO.
|
||||
|
||||
```
|
||||
public void cancelRoomBooking(int roomNumber)
|
||||
```
|
||||
The cancel room method consolidates steps like checking if the room is booked or not,
|
||||
The `cancelRoom` method consolidates steps like checking if the room is booked or not,
|
||||
if booked then calculates the refund amount and updates the database using the DAO.
|
||||
|
||||
## Class diagram
|
||||
|
||||

|
||||
|
||||
## Applicability
|
||||
Use the Transaction Script pattern when the application has only a small amount of logic and that logic won't be extended in the future.
|
||||
|
||||
Use the Transaction Script pattern when the application has only a small amount of logic and that
|
||||
logic won't be extended in the future.
|
||||
|
||||
## Consequences
|
||||
|
||||
* As the business logic gets more complicated,
|
||||
it gets progressively harder to keep the transaction script
|
||||
in a well-designed state.
|
||||
@@ -101,11 +111,13 @@ in a well-designed state.
|
||||
patterns.
|
||||
|
||||
## Related patterns
|
||||
|
||||
* Domain Model
|
||||
* Table Module
|
||||
* Service Layer
|
||||
|
||||
## Credits
|
||||
|
||||
* [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?ie=UTF8&tag=gupesasnebl-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0321127420)
|
||||
* [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)
|
||||
|
Reference in New Issue
Block a user