88import com .wonu606 .calculator .strategy .Strategy ;
99import com .wonu606 .io .Input ;
1010import com .wonu606 .io .Print ;
11- import com .wonu606 .util .Message ;
1211import java .io .IOException ;
1312import java .util .ArrayList ;
1413import java .util .List ;
@@ -18,8 +17,6 @@ public class CalculatorApp implements App {
1817
1918 private final List <Strategy > strategies = new ArrayList <>();
2019 private final Persistence store = new ResultStore ();
21- Input input ;
22- Print printer ;
2320
2421 public CalculatorApp () {
2522 initStrategies ();
@@ -30,20 +27,29 @@ private void initStrategies() {
3027 }
3128
3229 public void execute (Input input , Print printer ) throws IOException {
33- this .input = input ;
34- this .printer = printer ;
35-
3630 Converter <String , Integer > stringIntegerConverter = new StringToIntegerConverter ();
3731 while (true ) {
38- int selection = stringIntegerConverter .convert (input .getInput ());
39-
40- Optional <Strategy > selectedStrategy =
41- Optional .ofNullable (strategies .get (selection - 1 ));
42- selectedStrategy .ifPresentOrElse (
43- strategy -> strategy .execute (input , printer , store ),
44- () -> {
45- throw new IllegalArgumentException ("잘못된 입력입니다." );
46- });
32+ int selection = inputMenuSelection (input , stringIntegerConverter );
33+ Optional <Strategy > selectedStrategy = getStrategy (selection );
34+ performStrategy (input , printer , selectedStrategy );
4735 }
4836 }
37+
38+ private void performStrategy (Input input , Print printer , Optional <Strategy > selectedStrategy ) {
39+ selectedStrategy .ifPresentOrElse (
40+ strategy -> strategy .execute (input , printer , store ),
41+ () -> {
42+ throw new IllegalArgumentException ("잘못된 입력입니다." );
43+ });
44+ }
45+
46+ private Optional <Strategy > getStrategy (int selection ) {
47+ return Optional .ofNullable (strategies .get (selection - 1 ));
48+ }
49+
50+ private static int inputMenuSelection (Input input ,
51+ Converter <String , Integer > stringIntegerConverter )
52+ throws IOException {
53+ return stringIntegerConverter .convert (input .getInput ());
54+ }
4955}
0 commit comments