mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-15 14:59:25 +00:00
* #1317 Add Special Case Pattern To focus on pattern itself, I implement DB and maintenance lock by the singleton instance. * #1317 Add special cases unit tests Assert the logger output (ref: https://stackoverflow.com/a/52229629) * #1317 Add README.md Add Special Case Pattern README * #1317 Format: add a new line to end of file Co-authored-by: Subhrodip Mohanta <subhrodipmohanta@gmail.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package com.iluwatar.specialcase;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* <p>The Special Case Pattern is a software design pattern that encapsulates particular cases
|
||||
* into subclasses that provide special behaviors.</p>
|
||||
*
|
||||
* <p>In this example ({@link ReceiptViewModel}) encapsulates all particular cases.</p>
|
||||
*/
|
||||
public class App {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
|
||||
|
||||
/**
|
||||
* Program entry point.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
// DB seeding
|
||||
LOGGER.info("Db seeding: " + "1 user: {\"ignite1771\", amount = 1000.0}, "
|
||||
+ "2 products: {\"computer\": price = 800.0, \"car\": price = 20000.0}");
|
||||
Db.getInstance().seedUser("ignite1771", 1000.0);
|
||||
Db.getInstance().seedItem("computer", 800.0);
|
||||
Db.getInstance().seedItem("car", 20000.0);
|
||||
|
||||
final var applicationServices = new ApplicationServicesImpl();
|
||||
ReceiptViewModel receipt;
|
||||
|
||||
LOGGER.info("[REQUEST] User: " + "abc123" + " buy product: " + "tv");
|
||||
receipt = applicationServices.loggedInUserPurchase("abc123", "tv");
|
||||
receipt.show();
|
||||
MaintenanceLock.getInstance().setLock(false);
|
||||
LOGGER.info("[REQUEST] User: " + "abc123" + " buy product: " + "tv");
|
||||
receipt = applicationServices.loggedInUserPurchase("abc123", "tv");
|
||||
receipt.show();
|
||||
LOGGER.info("[REQUEST] User: " + "ignite1771" + " buy product: " + "tv");
|
||||
receipt = applicationServices.loggedInUserPurchase("ignite1771", "tv");
|
||||
receipt.show();
|
||||
LOGGER.info("[REQUEST] User: " + "ignite1771" + " buy product: " + "car");
|
||||
receipt = applicationServices.loggedInUserPurchase("ignite1771", "car");
|
||||
receipt.show();
|
||||
LOGGER.info("[REQUEST] User: " + "ignite1771" + " buy product: " + "computer");
|
||||
receipt = applicationServices.loggedInUserPurchase("ignite1771", "computer");
|
||||
receipt.show();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user