Skip to content

Commit 8da7207

Browse files
committed
feat: 조회와 계산 기능을 담을 인터페이스 구현
1 parent 1811f15 commit 8da7207

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,42 @@
11
package com.wonu606.calculator;
22

33
import com.wonu606.app.App;
4+
import com.wonu606.calculator.storage.Persistence;
5+
import com.wonu606.calculator.strategy.Strategy;
46
import com.wonu606.io.Input;
57
import com.wonu606.io.Print;
68
import java.io.IOException;
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
import java.util.Optional;
712

813
public class CalculatorApp implements App {
914

15+
private final List<Strategy> strategies = new ArrayList<>();
16+
private final Persistence store;
1017
Input input;
1118
Print printer;
1219

20+
public CalculatorApp() {
21+
initStrategies();
22+
}
23+
24+
private void initStrategies() {
25+
// TODO 조회와 계산 기능을 생성하여 추가해야 함
26+
}
27+
1328
public void execute(Input input, Print printer) throws IOException {
1429
this.input = input;
1530
this.printer = printer;
1631

1732
while (true) {
1833
String selection = input.getInput();
34+
35+
Optional<Strategy> selectedStrategy =
36+
Optional.ofNullable(strategies.get(selection - 1));
37+
selectedStrategy.ifPresentOrElse(
38+
strategy -> strategy.execute(input, printer, store),
39+
() -> new IllegalArgumentException("잘못된 입력입니다."));
1940
}
2041
}
2142
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.wonu606.calculator.storage;
2+
3+
import com.wonu606.calculator.model.CalculationResult;
4+
import java.util.List;
5+
6+
public interface Persistence {
7+
8+
void saveResult(CalculationResult calculationResult);
9+
10+
CalculationResult findResult(int sequence);
11+
12+
List<CalculationResult> findAllResult();
13+
14+
void clear();
15+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.wonu606.calculator.strategy;
2+
3+
import com.wonu606.calculator.storage.Persistence;
4+
import com.wonu606.io.Input;
5+
import com.wonu606.io.Print;
6+
7+
public interface Strategy {
8+
9+
void execute(Input input, Print printer, Persistence store);
10+
}

0 commit comments

Comments
 (0)