Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions src/main/java/lotto/LottoApplication.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package lotto;

import java.util.List;
import lotto.view.InputView;
import lotto.view.ResultView;

Expand All @@ -11,7 +12,7 @@ public static void main(String[] args) {

ManualLottoCount manualCount = createManualLottoCount(amount);
Lottos manualLottos = createManualLottos(manualCount);
Lottos autoLottos = LottoMachine.randomLottos(amount.autoCount(manualCount));
Lottos autoLottos = new AutoLottosGenerator(amount.autoCount(manualCount)).generate();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이와 같이 인터페이스를 구현하고, 구현체가 서로 연결되어 있는 경우 아래와 같은 구현체를 통해 구현체를 통합할 수 있음.
보통 디자인 패턴에서 컴포지트 패턴으로 알려져 있음.
아래와 같은 객체 추가에 따른 효과를 느껴 봤으면 하는 바람으로 피드백 남겨봄.

public class LottosBundleGenerator implements LottosGenerator {
    private final Money money;
    private final List<String> manualLottoText;

    public LottosBundleGenerator(Money money, List<String> manualLottoText) {
        this.money = money;
        this.manualLottoText = manualLottoText;
    }

    @Override
    public Lottos generate() {
        // ManualLottosGenerator 활용해 수동 로또 생성
        // AutoLottosGenerator 활용해 자동 로또 생성(수동 로또 수 만큼 Money 차감)
        return  로또를 합쳐서 반환;
    }
}


Lottos purchased = manualLottos.merge(autoLottos);
ResultView.printPurchasedLottos(purchased, manualCount);
Expand All @@ -36,9 +37,11 @@ private static ManualLottoCount createManualLottoCount(PurchaseAmount amount) {
}

private static Lottos createManualLottos(ManualLottoCount manualCount) {
return InputRetry.retry(() ->
Lottos.manualLottos(InputView.readManualLottos(manualCount.count()))
);
return InputRetry.retry(() -> {
List<String> manualNumbers = InputView.readManualLottos(manualCount.count());
LottosGenerator generator = new ManualLottosGenerator(manualNumbers);
return generator.generate();
});
}

private static WinningNumbers createWinningNumbers() {
Expand Down
8 changes: 0 additions & 8 deletions src/main/java/lotto/LottoMachine.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,6 @@

public class LottoMachine {

public static Lottos randomLottos(int count) {
List<Lotto> lottos = new ArrayList<>();
for (int i = 0; i < count; i++) {
lottos.add(randomLotto());
}
return new Lottos(lottos);
}

public static Lotto randomLotto() {
List<Integer> numbers = new ArrayList<>();
for (int i = Lotto.MIN_NUMBER; i <= Lotto.MAX_NUMBER; i++) {
Expand Down