mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-17 04:59:21 +00:00
Hexagonal pattern: Remove unnecessary factories
This commit is contained in:
@@ -180,7 +180,7 @@ public class MongoTicketRepository implements LotteryTicketRepository {
|
||||
}
|
||||
|
||||
private LotteryTicket docToTicket(Document doc) {
|
||||
PlayerDetails playerDetails = PlayerDetails.create(doc.getString("email"), doc.getString("bank"),
|
||||
PlayerDetails playerDetails = new PlayerDetails(doc.getString("email"), doc.getString("bank"),
|
||||
doc.getString("phone"));
|
||||
int[] numArray = Arrays.asList(doc.getString("numbers").split(",")).stream().mapToInt(Integer::parseInt).toArray();
|
||||
HashSet<Integer> numbers = new HashSet<>();
|
||||
@@ -188,6 +188,6 @@ public class MongoTicketRepository implements LotteryTicketRepository {
|
||||
numbers.add(num);
|
||||
}
|
||||
LotteryNumbers lotteryNumbers = LotteryNumbers.create(numbers);
|
||||
return LotteryTicket.create(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
|
||||
return new LotteryTicket(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,6 @@ public class LotteryAdministration {
|
||||
private final LotteryTicketRepository repository;
|
||||
private final LotteryEventLog notifications;
|
||||
private final WireTransfers wireTransfers;
|
||||
private final LotteryTicketChecker checker;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@@ -50,7 +49,6 @@ public class LotteryAdministration {
|
||||
this.repository = repository;
|
||||
this.notifications = notifications;
|
||||
this.wireTransfers = wireTransfers;
|
||||
this.checker = new LotteryTicketChecker(this.repository);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,7 +65,7 @@ public class LotteryAdministration {
|
||||
LotteryNumbers numbers = LotteryNumbers.createRandom();
|
||||
Map<LotteryTicketId, LotteryTicket> tickets = getAllSubmittedTickets();
|
||||
for (LotteryTicketId id : tickets.keySet()) {
|
||||
LotteryTicketCheckResult result = checker.checkTicketForPrize(id, numbers);
|
||||
LotteryTicketCheckResult result = new LotteryTicketChecker(repository).checkTicketForPrize(id, numbers);
|
||||
if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) {
|
||||
boolean transferred = wireTransfers.transferFunds(LotteryConstants.PRIZE_AMOUNT,
|
||||
LotteryConstants.SERVICE_BANK_ACCOUNT, tickets.get(id).getPlayerDetails().getBankAccount());
|
||||
|
||||
@@ -29,6 +29,9 @@ package com.iluwatar.hexagonal.domain;
|
||||
*/
|
||||
public class LotteryConstants {
|
||||
|
||||
private LotteryConstants() {
|
||||
}
|
||||
|
||||
public static final int PRIZE_AMOUNT = 100000;
|
||||
public static final String SERVICE_BANK_ACCOUNT = "123-123";
|
||||
public static final int TICKET_PRIZE = 3;
|
||||
|
||||
@@ -39,7 +39,6 @@ public class LotteryService {
|
||||
private final LotteryTicketRepository repository;
|
||||
private final LotteryEventLog notifications;
|
||||
private final WireTransfers wireTransfers;
|
||||
private final LotteryTicketChecker checker;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@@ -50,7 +49,6 @@ public class LotteryService {
|
||||
this.repository = repository;
|
||||
this.notifications = notifications;
|
||||
this.wireTransfers = wireTransfers;
|
||||
this.checker = new LotteryTicketChecker(this.repository);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,6 +72,6 @@ public class LotteryService {
|
||||
* Check if lottery ticket has won
|
||||
*/
|
||||
public LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers) {
|
||||
return checker.checkTicketForPrize(id, winningNumbers);
|
||||
return new LotteryTicketChecker(repository).checkTicketForPrize(id, winningNumbers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,19 +36,12 @@ public class LotteryTicket {
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
private LotteryTicket(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
|
||||
public LotteryTicket(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
|
||||
this.id = id;
|
||||
playerDetails = details;
|
||||
lotteryNumbers = numbers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory for creating lottery tickets;
|
||||
*/
|
||||
public static LotteryTicket create(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
|
||||
return new LotteryTicket(id, details, numbers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return player details
|
||||
*/
|
||||
|
||||
@@ -36,19 +36,12 @@ public class PlayerDetails {
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
private PlayerDetails(String email, String bankAccount, String phone) {
|
||||
public PlayerDetails(String email, String bankAccount, String phone) {
|
||||
emailAddress = email;
|
||||
bankAccountNumber = bankAccount;
|
||||
phoneNumber = phone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory for creating new objects.
|
||||
*/
|
||||
public static PlayerDetails create(String email, String bankAccount, String phone) {
|
||||
return new PlayerDetails(email, bankAccount, phone);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return email
|
||||
*/
|
||||
|
||||
@@ -43,45 +43,45 @@ public class SampleData {
|
||||
|
||||
static {
|
||||
PLAYERS = new ArrayList<>();
|
||||
PLAYERS.add(PlayerDetails.create("john@google.com", "312-342", "+3242434242"));
|
||||
PLAYERS.add(PlayerDetails.create("mary@google.com", "234-987", "+23452346"));
|
||||
PLAYERS.add(PlayerDetails.create("steve@google.com", "833-836", "+63457543"));
|
||||
PLAYERS.add(PlayerDetails.create("wayne@google.com", "319-826", "+24626"));
|
||||
PLAYERS.add(PlayerDetails.create("johnie@google.com", "983-322", "+3635635"));
|
||||
PLAYERS.add(PlayerDetails.create("andy@google.com", "934-734", "+0898245"));
|
||||
PLAYERS.add(PlayerDetails.create("richard@google.com", "536-738", "+09845325"));
|
||||
PLAYERS.add(PlayerDetails.create("kevin@google.com", "453-936", "+2423532"));
|
||||
PLAYERS.add(PlayerDetails.create("arnold@google.com", "114-988", "+5646346524"));
|
||||
PLAYERS.add(PlayerDetails.create("ian@google.com", "663-765", "+928394235"));
|
||||
PLAYERS.add(PlayerDetails.create("robin@google.com", "334-763", "+35448"));
|
||||
PLAYERS.add(PlayerDetails.create("ted@google.com", "735-964", "+98752345"));
|
||||
PLAYERS.add(PlayerDetails.create("larry@google.com", "734-853", "+043842423"));
|
||||
PLAYERS.add(PlayerDetails.create("calvin@google.com", "334-746", "+73294135"));
|
||||
PLAYERS.add(PlayerDetails.create("jacob@google.com", "444-766", "+358042354"));
|
||||
PLAYERS.add(PlayerDetails.create("edwin@google.com", "895-345", "+9752435"));
|
||||
PLAYERS.add(PlayerDetails.create("mary@google.com", "760-009", "+34203542"));
|
||||
PLAYERS.add(PlayerDetails.create("lolita@google.com", "425-907", "+9872342"));
|
||||
PLAYERS.add(PlayerDetails.create("bruno@google.com", "023-638", "+673824122"));
|
||||
PLAYERS.add(PlayerDetails.create("peter@google.com", "335-886", "+5432503945"));
|
||||
PLAYERS.add(PlayerDetails.create("warren@google.com", "225-946", "+9872341324"));
|
||||
PLAYERS.add(PlayerDetails.create("monica@google.com", "265-748", "+134124"));
|
||||
PLAYERS.add(PlayerDetails.create("ollie@google.com", "190-045", "+34453452"));
|
||||
PLAYERS.add(PlayerDetails.create("yngwie@google.com", "241-465", "+9897641231"));
|
||||
PLAYERS.add(PlayerDetails.create("lars@google.com", "746-936", "+42345298345"));
|
||||
PLAYERS.add(PlayerDetails.create("bobbie@google.com", "946-384", "+79831742"));
|
||||
PLAYERS.add(PlayerDetails.create("tyron@google.com", "310-992", "+0498837412"));
|
||||
PLAYERS.add(PlayerDetails.create("tyrell@google.com", "032-045", "+67834134"));
|
||||
PLAYERS.add(PlayerDetails.create("nadja@google.com", "000-346", "+498723"));
|
||||
PLAYERS.add(PlayerDetails.create("wendy@google.com", "994-989", "+987324454"));
|
||||
PLAYERS.add(PlayerDetails.create("luke@google.com", "546-634", "+987642435"));
|
||||
PLAYERS.add(PlayerDetails.create("bjorn@google.com", "342-874", "+7834325"));
|
||||
PLAYERS.add(PlayerDetails.create("lisa@google.com", "024-653", "+980742154"));
|
||||
PLAYERS.add(PlayerDetails.create("anton@google.com", "834-935", "+876423145"));
|
||||
PLAYERS.add(PlayerDetails.create("bruce@google.com", "284-936", "+09843212345"));
|
||||
PLAYERS.add(PlayerDetails.create("ray@google.com", "843-073", "+678324123"));
|
||||
PLAYERS.add(PlayerDetails.create("ron@google.com", "637-738", "+09842354"));
|
||||
PLAYERS.add(PlayerDetails.create("xavier@google.com", "143-947", "+375245"));
|
||||
PLAYERS.add(PlayerDetails.create("harriet@google.com", "842-404", "+131243252"));
|
||||
PLAYERS.add(new PlayerDetails("john@google.com", "312-342", "+3242434242"));
|
||||
PLAYERS.add(new PlayerDetails("mary@google.com", "234-987", "+23452346"));
|
||||
PLAYERS.add(new PlayerDetails("steve@google.com", "833-836", "+63457543"));
|
||||
PLAYERS.add(new PlayerDetails("wayne@google.com", "319-826", "+24626"));
|
||||
PLAYERS.add(new PlayerDetails("johnie@google.com", "983-322", "+3635635"));
|
||||
PLAYERS.add(new PlayerDetails("andy@google.com", "934-734", "+0898245"));
|
||||
PLAYERS.add(new PlayerDetails("richard@google.com", "536-738", "+09845325"));
|
||||
PLAYERS.add(new PlayerDetails("kevin@google.com", "453-936", "+2423532"));
|
||||
PLAYERS.add(new PlayerDetails("arnold@google.com", "114-988", "+5646346524"));
|
||||
PLAYERS.add(new PlayerDetails("ian@google.com", "663-765", "+928394235"));
|
||||
PLAYERS.add(new PlayerDetails("robin@google.com", "334-763", "+35448"));
|
||||
PLAYERS.add(new PlayerDetails("ted@google.com", "735-964", "+98752345"));
|
||||
PLAYERS.add(new PlayerDetails("larry@google.com", "734-853", "+043842423"));
|
||||
PLAYERS.add(new PlayerDetails("calvin@google.com", "334-746", "+73294135"));
|
||||
PLAYERS.add(new PlayerDetails("jacob@google.com", "444-766", "+358042354"));
|
||||
PLAYERS.add(new PlayerDetails("edwin@google.com", "895-345", "+9752435"));
|
||||
PLAYERS.add(new PlayerDetails("mary@google.com", "760-009", "+34203542"));
|
||||
PLAYERS.add(new PlayerDetails("lolita@google.com", "425-907", "+9872342"));
|
||||
PLAYERS.add(new PlayerDetails("bruno@google.com", "023-638", "+673824122"));
|
||||
PLAYERS.add(new PlayerDetails("peter@google.com", "335-886", "+5432503945"));
|
||||
PLAYERS.add(new PlayerDetails("warren@google.com", "225-946", "+9872341324"));
|
||||
PLAYERS.add(new PlayerDetails("monica@google.com", "265-748", "+134124"));
|
||||
PLAYERS.add(new PlayerDetails("ollie@google.com", "190-045", "+34453452"));
|
||||
PLAYERS.add(new PlayerDetails("yngwie@google.com", "241-465", "+9897641231"));
|
||||
PLAYERS.add(new PlayerDetails("lars@google.com", "746-936", "+42345298345"));
|
||||
PLAYERS.add(new PlayerDetails("bobbie@google.com", "946-384", "+79831742"));
|
||||
PLAYERS.add(new PlayerDetails("tyron@google.com", "310-992", "+0498837412"));
|
||||
PLAYERS.add(new PlayerDetails("tyrell@google.com", "032-045", "+67834134"));
|
||||
PLAYERS.add(new PlayerDetails("nadja@google.com", "000-346", "+498723"));
|
||||
PLAYERS.add(new PlayerDetails("wendy@google.com", "994-989", "+987324454"));
|
||||
PLAYERS.add(new PlayerDetails("luke@google.com", "546-634", "+987642435"));
|
||||
PLAYERS.add(new PlayerDetails("bjorn@google.com", "342-874", "+7834325"));
|
||||
PLAYERS.add(new PlayerDetails("lisa@google.com", "024-653", "+980742154"));
|
||||
PLAYERS.add(new PlayerDetails("anton@google.com", "834-935", "+876423145"));
|
||||
PLAYERS.add(new PlayerDetails("bruce@google.com", "284-936", "+09843212345"));
|
||||
PLAYERS.add(new PlayerDetails("ray@google.com", "843-073", "+678324123"));
|
||||
PLAYERS.add(new PlayerDetails("ron@google.com", "637-738", "+09842354"));
|
||||
PLAYERS.add(new PlayerDetails("xavier@google.com", "143-947", "+375245"));
|
||||
PLAYERS.add(new PlayerDetails("harriet@google.com", "842-404", "+131243252"));
|
||||
InMemoryBank wireTransfers = new InMemoryBank();
|
||||
Random random = new Random();
|
||||
for (int i = 0; i < PLAYERS.size(); i++) {
|
||||
@@ -95,7 +95,7 @@ public class SampleData {
|
||||
*/
|
||||
public static void submitTickets(LotteryService lotteryService, int numTickets) {
|
||||
for (int i = 0; i < numTickets; i++) {
|
||||
LotteryTicket ticket = LotteryTicket.create(new LotteryTicketId(),
|
||||
LotteryTicket ticket = new LotteryTicket(new LotteryTicketId(),
|
||||
getRandomPlayerDetails(), LotteryNumbers.createRandom());
|
||||
lotteryService.submitTicket(ticket);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class ConsoleLottery {
|
||||
String account = readString(scanner);
|
||||
System.out.println("What is your phone number?");
|
||||
String phone = readString(scanner);
|
||||
PlayerDetails details = PlayerDetails.create(email, account, phone);
|
||||
PlayerDetails details = new PlayerDetails(email, account, phone);
|
||||
System.out.println("Give 4 comma separated lottery numbers?");
|
||||
String numbers = readString(scanner);
|
||||
try {
|
||||
@@ -86,7 +86,7 @@ public class ConsoleLottery {
|
||||
chosen.add(Integer.parseInt(parts[i]));
|
||||
}
|
||||
LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen);
|
||||
LotteryTicket lotteryTicket = LotteryTicket.create(new LotteryTicketId(), details, lotteryNumbers);
|
||||
LotteryTicket lotteryTicket = new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers);
|
||||
Optional<LotteryTicketId> id = service.submitTicket(lotteryTicket);
|
||||
if (id.isPresent()) {
|
||||
System.out.println("Submitted lottery ticket with id: " + id.get());
|
||||
|
||||
Reference in New Issue
Block a user