Skip to content

Commit 6aa58e8

Browse files
committed
Hexagonal pattern: Remove unnecessary factories
1 parent 914d135 commit 6aa58e8

13 files changed

Lines changed: 66 additions & 81 deletions

File tree

hexagonal/src/main/java/com/iluwatar/hexagonal/database/MongoTicketRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,14 +180,14 @@ public void deleteAll() {
180180
}
181181

182182
private LotteryTicket docToTicket(Document doc) {
183-
PlayerDetails playerDetails = PlayerDetails.create(doc.getString("email"), doc.getString("bank"),
183+
PlayerDetails playerDetails = new PlayerDetails(doc.getString("email"), doc.getString("bank"),
184184
doc.getString("phone"));
185185
int[] numArray = Arrays.asList(doc.getString("numbers").split(",")).stream().mapToInt(Integer::parseInt).toArray();
186186
HashSet<Integer> numbers = new HashSet<>();
187187
for (int num: numArray) {
188188
numbers.add(num);
189189
}
190190
LotteryNumbers lotteryNumbers = LotteryNumbers.create(numbers);
191-
return LotteryTicket.create(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
191+
return new LotteryTicket(new LotteryTicketId(doc.getInteger("ticketId")), playerDetails, lotteryNumbers);
192192
}
193193
}

hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class LotteryAdministration {
3939
private final LotteryTicketRepository repository;
4040
private final LotteryEventLog notifications;
4141
private final WireTransfers wireTransfers;
42-
private final LotteryTicketChecker checker;
4342

4443
/**
4544
* Constructor
@@ -50,7 +49,6 @@ public LotteryAdministration(LotteryTicketRepository repository, LotteryEventLog
5049
this.repository = repository;
5150
this.notifications = notifications;
5251
this.wireTransfers = wireTransfers;
53-
this.checker = new LotteryTicketChecker(this.repository);
5452
}
5553

5654
/**
@@ -67,7 +65,7 @@ public LotteryNumbers performLottery() {
6765
LotteryNumbers numbers = LotteryNumbers.createRandom();
6866
Map<LotteryTicketId, LotteryTicket> tickets = getAllSubmittedTickets();
6967
for (LotteryTicketId id : tickets.keySet()) {
70-
LotteryTicketCheckResult result = checker.checkTicketForPrize(id, numbers);
68+
LotteryTicketCheckResult result = new LotteryTicketChecker(repository).checkTicketForPrize(id, numbers);
7169
if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) {
7270
boolean transferred = wireTransfers.transferFunds(LotteryConstants.PRIZE_AMOUNT,
7371
LotteryConstants.SERVICE_BANK_ACCOUNT, tickets.get(id).getPlayerDetails().getBankAccount());

hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryConstants.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
*/
3030
public class LotteryConstants {
3131

32+
private LotteryConstants() {
33+
}
34+
3235
public static final int PRIZE_AMOUNT = 100000;
3336
public static final String SERVICE_BANK_ACCOUNT = "123-123";
3437
public static final int TICKET_PRIZE = 3;

hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryService.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class LotteryService {
3939
private final LotteryTicketRepository repository;
4040
private final LotteryEventLog notifications;
4141
private final WireTransfers wireTransfers;
42-
private final LotteryTicketChecker checker;
4342

4443
/**
4544
* Constructor
@@ -50,7 +49,6 @@ public LotteryService(LotteryTicketRepository repository, LotteryEventLog notifi
5049
this.repository = repository;
5150
this.notifications = notifications;
5251
this.wireTransfers = wireTransfers;
53-
this.checker = new LotteryTicketChecker(this.repository);
5452
}
5553

5654
/**
@@ -74,6 +72,6 @@ public Optional<LotteryTicketId> submitTicket(LotteryTicket ticket) {
7472
* Check if lottery ticket has won
7573
*/
7674
public LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers) {
77-
return checker.checkTicketForPrize(id, winningNumbers);
75+
return new LotteryTicketChecker(repository).checkTicketForPrize(id, winningNumbers);
7876
}
7977
}

hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryTicket.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,12 @@ public class LotteryTicket {
3636
/**
3737
* Constructor.
3838
*/
39-
private LotteryTicket(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
39+
public LotteryTicket(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
4040
this.id = id;
4141
playerDetails = details;
4242
lotteryNumbers = numbers;
4343
}
4444

45-
/**
46-
* Factory for creating lottery tickets;
47-
*/
48-
public static LotteryTicket create(LotteryTicketId id, PlayerDetails details, LotteryNumbers numbers) {
49-
return new LotteryTicket(id, details, numbers);
50-
}
51-
5245
/**
5346
* @return player details
5447
*/

hexagonal/src/main/java/com/iluwatar/hexagonal/domain/PlayerDetails.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,12 @@ public class PlayerDetails {
3636
/**
3737
* Constructor.
3838
*/
39-
private PlayerDetails(String email, String bankAccount, String phone) {
39+
public PlayerDetails(String email, String bankAccount, String phone) {
4040
emailAddress = email;
4141
bankAccountNumber = bankAccount;
4242
phoneNumber = phone;
4343
}
44-
45-
/**
46-
* Factory for creating new objects.
47-
*/
48-
public static PlayerDetails create(String email, String bankAccount, String phone) {
49-
return new PlayerDetails(email, bankAccount, phone);
50-
}
51-
44+
5245
/**
5346
* @return email
5447
*/

hexagonal/src/main/java/com/iluwatar/hexagonal/sampledata/SampleData.java

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -43,45 +43,45 @@ public class SampleData {
4343

4444
static {
4545
PLAYERS = new ArrayList<>();
46-
PLAYERS.add(PlayerDetails.create("john@google.com", "312-342", "+3242434242"));
47-
PLAYERS.add(PlayerDetails.create("mary@google.com", "234-987", "+23452346"));
48-
PLAYERS.add(PlayerDetails.create("steve@google.com", "833-836", "+63457543"));
49-
PLAYERS.add(PlayerDetails.create("wayne@google.com", "319-826", "+24626"));
50-
PLAYERS.add(PlayerDetails.create("johnie@google.com", "983-322", "+3635635"));
51-
PLAYERS.add(PlayerDetails.create("andy@google.com", "934-734", "+0898245"));
52-
PLAYERS.add(PlayerDetails.create("richard@google.com", "536-738", "+09845325"));
53-
PLAYERS.add(PlayerDetails.create("kevin@google.com", "453-936", "+2423532"));
54-
PLAYERS.add(PlayerDetails.create("arnold@google.com", "114-988", "+5646346524"));
55-
PLAYERS.add(PlayerDetails.create("ian@google.com", "663-765", "+928394235"));
56-
PLAYERS.add(PlayerDetails.create("robin@google.com", "334-763", "+35448"));
57-
PLAYERS.add(PlayerDetails.create("ted@google.com", "735-964", "+98752345"));
58-
PLAYERS.add(PlayerDetails.create("larry@google.com", "734-853", "+043842423"));
59-
PLAYERS.add(PlayerDetails.create("calvin@google.com", "334-746", "+73294135"));
60-
PLAYERS.add(PlayerDetails.create("jacob@google.com", "444-766", "+358042354"));
61-
PLAYERS.add(PlayerDetails.create("edwin@google.com", "895-345", "+9752435"));
62-
PLAYERS.add(PlayerDetails.create("mary@google.com", "760-009", "+34203542"));
63-
PLAYERS.add(PlayerDetails.create("lolita@google.com", "425-907", "+9872342"));
64-
PLAYERS.add(PlayerDetails.create("bruno@google.com", "023-638", "+673824122"));
65-
PLAYERS.add(PlayerDetails.create("peter@google.com", "335-886", "+5432503945"));
66-
PLAYERS.add(PlayerDetails.create("warren@google.com", "225-946", "+9872341324"));
67-
PLAYERS.add(PlayerDetails.create("monica@google.com", "265-748", "+134124"));
68-
PLAYERS.add(PlayerDetails.create("ollie@google.com", "190-045", "+34453452"));
69-
PLAYERS.add(PlayerDetails.create("yngwie@google.com", "241-465", "+9897641231"));
70-
PLAYERS.add(PlayerDetails.create("lars@google.com", "746-936", "+42345298345"));
71-
PLAYERS.add(PlayerDetails.create("bobbie@google.com", "946-384", "+79831742"));
72-
PLAYERS.add(PlayerDetails.create("tyron@google.com", "310-992", "+0498837412"));
73-
PLAYERS.add(PlayerDetails.create("tyrell@google.com", "032-045", "+67834134"));
74-
PLAYERS.add(PlayerDetails.create("nadja@google.com", "000-346", "+498723"));
75-
PLAYERS.add(PlayerDetails.create("wendy@google.com", "994-989", "+987324454"));
76-
PLAYERS.add(PlayerDetails.create("luke@google.com", "546-634", "+987642435"));
77-
PLAYERS.add(PlayerDetails.create("bjorn@google.com", "342-874", "+7834325"));
78-
PLAYERS.add(PlayerDetails.create("lisa@google.com", "024-653", "+980742154"));
79-
PLAYERS.add(PlayerDetails.create("anton@google.com", "834-935", "+876423145"));
80-
PLAYERS.add(PlayerDetails.create("bruce@google.com", "284-936", "+09843212345"));
81-
PLAYERS.add(PlayerDetails.create("ray@google.com", "843-073", "+678324123"));
82-
PLAYERS.add(PlayerDetails.create("ron@google.com", "637-738", "+09842354"));
83-
PLAYERS.add(PlayerDetails.create("xavier@google.com", "143-947", "+375245"));
84-
PLAYERS.add(PlayerDetails.create("harriet@google.com", "842-404", "+131243252"));
46+
PLAYERS.add(new PlayerDetails("john@google.com", "312-342", "+3242434242"));
47+
PLAYERS.add(new PlayerDetails("mary@google.com", "234-987", "+23452346"));
48+
PLAYERS.add(new PlayerDetails("steve@google.com", "833-836", "+63457543"));
49+
PLAYERS.add(new PlayerDetails("wayne@google.com", "319-826", "+24626"));
50+
PLAYERS.add(new PlayerDetails("johnie@google.com", "983-322", "+3635635"));
51+
PLAYERS.add(new PlayerDetails("andy@google.com", "934-734", "+0898245"));
52+
PLAYERS.add(new PlayerDetails("richard@google.com", "536-738", "+09845325"));
53+
PLAYERS.add(new PlayerDetails("kevin@google.com", "453-936", "+2423532"));
54+
PLAYERS.add(new PlayerDetails("arnold@google.com", "114-988", "+5646346524"));
55+
PLAYERS.add(new PlayerDetails("ian@google.com", "663-765", "+928394235"));
56+
PLAYERS.add(new PlayerDetails("robin@google.com", "334-763", "+35448"));
57+
PLAYERS.add(new PlayerDetails("ted@google.com", "735-964", "+98752345"));
58+
PLAYERS.add(new PlayerDetails("larry@google.com", "734-853", "+043842423"));
59+
PLAYERS.add(new PlayerDetails("calvin@google.com", "334-746", "+73294135"));
60+
PLAYERS.add(new PlayerDetails("jacob@google.com", "444-766", "+358042354"));
61+
PLAYERS.add(new PlayerDetails("edwin@google.com", "895-345", "+9752435"));
62+
PLAYERS.add(new PlayerDetails("mary@google.com", "760-009", "+34203542"));
63+
PLAYERS.add(new PlayerDetails("lolita@google.com", "425-907", "+9872342"));
64+
PLAYERS.add(new PlayerDetails("bruno@google.com", "023-638", "+673824122"));
65+
PLAYERS.add(new PlayerDetails("peter@google.com", "335-886", "+5432503945"));
66+
PLAYERS.add(new PlayerDetails("warren@google.com", "225-946", "+9872341324"));
67+
PLAYERS.add(new PlayerDetails("monica@google.com", "265-748", "+134124"));
68+
PLAYERS.add(new PlayerDetails("ollie@google.com", "190-045", "+34453452"));
69+
PLAYERS.add(new PlayerDetails("yngwie@google.com", "241-465", "+9897641231"));
70+
PLAYERS.add(new PlayerDetails("lars@google.com", "746-936", "+42345298345"));
71+
PLAYERS.add(new PlayerDetails("bobbie@google.com", "946-384", "+79831742"));
72+
PLAYERS.add(new PlayerDetails("tyron@google.com", "310-992", "+0498837412"));
73+
PLAYERS.add(new PlayerDetails("tyrell@google.com", "032-045", "+67834134"));
74+
PLAYERS.add(new PlayerDetails("nadja@google.com", "000-346", "+498723"));
75+
PLAYERS.add(new PlayerDetails("wendy@google.com", "994-989", "+987324454"));
76+
PLAYERS.add(new PlayerDetails("luke@google.com", "546-634", "+987642435"));
77+
PLAYERS.add(new PlayerDetails("bjorn@google.com", "342-874", "+7834325"));
78+
PLAYERS.add(new PlayerDetails("lisa@google.com", "024-653", "+980742154"));
79+
PLAYERS.add(new PlayerDetails("anton@google.com", "834-935", "+876423145"));
80+
PLAYERS.add(new PlayerDetails("bruce@google.com", "284-936", "+09843212345"));
81+
PLAYERS.add(new PlayerDetails("ray@google.com", "843-073", "+678324123"));
82+
PLAYERS.add(new PlayerDetails("ron@google.com", "637-738", "+09842354"));
83+
PLAYERS.add(new PlayerDetails("xavier@google.com", "143-947", "+375245"));
84+
PLAYERS.add(new PlayerDetails("harriet@google.com", "842-404", "+131243252"));
8585
InMemoryBank wireTransfers = new InMemoryBank();
8686
Random random = new Random();
8787
for (int i = 0; i < PLAYERS.size(); i++) {
@@ -95,7 +95,7 @@ public class SampleData {
9595
*/
9696
public static void submitTickets(LotteryService lotteryService, int numTickets) {
9797
for (int i = 0; i < numTickets; i++) {
98-
LotteryTicket ticket = LotteryTicket.create(new LotteryTicketId(),
98+
LotteryTicket ticket = new LotteryTicket(new LotteryTicketId(),
9999
getRandomPlayerDetails(), LotteryNumbers.createRandom());
100100
lotteryService.submitTicket(ticket);
101101
}

hexagonal/src/main/java/com/iluwatar/hexagonal/service/ConsoleLottery.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public static void main(String[] args) {
7676
String account = readString(scanner);
7777
System.out.println("What is your phone number?");
7878
String phone = readString(scanner);
79-
PlayerDetails details = PlayerDetails.create(email, account, phone);
79+
PlayerDetails details = new PlayerDetails(email, account, phone);
8080
System.out.println("Give 4 comma separated lottery numbers?");
8181
String numbers = readString(scanner);
8282
try {
@@ -86,7 +86,7 @@ public static void main(String[] args) {
8686
chosen.add(Integer.parseInt(parts[i]));
8787
}
8888
LotteryNumbers lotteryNumbers = LotteryNumbers.create(chosen);
89-
LotteryTicket lotteryTicket = LotteryTicket.create(new LotteryTicketId(), details, lotteryNumbers);
89+
LotteryTicket lotteryTicket = new LotteryTicket(new LotteryTicketId(), details, lotteryNumbers);
9090
Optional<LotteryTicketId> id = service.submitTicket(lotteryTicket);
9191
if (id.isPresent()) {
9292
System.out.println("Submitted lottery ticket with id: " + id.get());

hexagonal/src/test/java/com/iluwatar/hexagonal/database/MongoTicketRepositoryTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ public void testNextId() {
7676
@Test
7777
public void testCrudOperations() {
7878
// create new lottery ticket and save it
79-
PlayerDetails details = PlayerDetails.create("foo@bar.com", "123-123", "07001234");
79+
PlayerDetails details = new PlayerDetails("foo@bar.com", "123-123", "07001234");
8080
LotteryNumbers random = LotteryNumbers.createRandom();
81-
LotteryTicket original = LotteryTicket.create(new LotteryTicketId(), details, random);
81+
LotteryTicket original = new LotteryTicket(new LotteryTicketId(), details, random);
8282
Optional<LotteryTicketId> saved = repository.save(original);
8383
assertEquals(1, repository.getTicketsCollection().count());
8484
assertTrue(saved.isPresent());

hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryTicketTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ public class LotteryTicketTest {
3434

3535
@Test
3636
public void testEquals() {
37-
PlayerDetails details1 = PlayerDetails.create("bob@foo.bar", "1212-121212", "+34332322");
37+
PlayerDetails details1 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322");
3838
LotteryNumbers numbers1 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 4)));
39-
LotteryTicket ticket1 = LotteryTicket.create(new LotteryTicketId(), details1, numbers1);
40-
PlayerDetails details2 = PlayerDetails.create("bob@foo.bar", "1212-121212", "+34332322");
39+
LotteryTicket ticket1 = new LotteryTicket(new LotteryTicketId(), details1, numbers1);
40+
PlayerDetails details2 = new PlayerDetails("bob@foo.bar", "1212-121212", "+34332322");
4141
LotteryNumbers numbers2 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 4)));
42-
LotteryTicket ticket2 = LotteryTicket.create(new LotteryTicketId(), details2, numbers2);
42+
LotteryTicket ticket2 = new LotteryTicket(new LotteryTicketId(), details2, numbers2);
4343
assertEquals(ticket1, ticket2);
44-
PlayerDetails details3 = PlayerDetails.create("elsa@foo.bar", "1223-121212", "+49332322");
44+
PlayerDetails details3 = new PlayerDetails("elsa@foo.bar", "1223-121212", "+49332322");
4545
LotteryNumbers numbers3 = LotteryNumbers.create(new HashSet<Integer>(Arrays.asList(1, 2, 3, 8)));
46-
LotteryTicket ticket3 = LotteryTicket.create(new LotteryTicketId(), details3, numbers3);
46+
LotteryTicket ticket3 = new LotteryTicket(new LotteryTicketId(), details3, numbers3);
4747
assertFalse(ticket1.equals(ticket3));
4848
}
4949
}

0 commit comments

Comments
 (0)