섭섭한 개발일지

[명언게시판] level 5 본문

멋쟁이사자처럼/Project

[명언게시판] level 5

Seop 2023. 10. 27. 15:41
구현 요구사항
== 명언 앱 ==
명령) 등록
명언 : 현재를 사랑하라.
작가 : 작자미상
1번 명언이 등록되었습니다.
명령) 등록
명언 : 현재를 사랑하라.
작가 : 작자미상
2번 명언이 등록되었습니다.
명령) 목록
번호 / 작가 / 명언
----------------------
2 / 작자미상 / 과거에 집착하지 마라.
1 / 작자미상 / 현재를 사랑하라.
명령) 종료

 

: 단순 리스트 출력이다. 사용자를 통해 "목록" 이라는 명령만 받으면 추가적으로 받을 명령이 없기에

output에서 출력을 해주면 된다.

 

 

구현

// main
public class Application {
    public static void main(String[] args) {
        SayingRepository repo = SayingRepository.getInstance();
        Input input = new Input();
        Output output = new Output();

        while (true) {
            System.out.print("명령) ");
            String request = InputView.read();

            if (request.equals("등록")) {
                Saying saying = input.addSaying(new Saying());
                repo.save(saying);
                output.printAddSaying(saying);
            }

            if (request.equals("목록")) {
                output.printSayings(repo.findAll());
            }

            if (request.equals("종료")) {
                break;
            }
        }
    }
}


// repository
public class SayingRepository {
    private static final Map<Long, Saying> sayings = new HashMap<>();
    private static Long id = 0L;

    private static final SayingRepository instance = new SayingRepository();

    private SayingRepository() {
        testDataInit();
    }

    public static SayingRepository getInstance() {
        return instance;
    }

    public Saying save(Saying saying) {
        saying.setId(++id);
        sayings.put(saying.getId(), saying);
        return saying;
    }

    public List<Saying> findAll() {
        return new ArrayList<>(sayings.values());
    }

	// 기능 테스트를 위한 명언 자동 생성
    private void testDataInit() {
        for (int i = 1; i <= 10; i++) {
            Saying saying = new Saying();
            saying.setContent("test content " + i);
            saying.setAuthor("test author " + i);
            save(saying);
        }
    }
}


// output
public class Output {
    public void printAddSaying(Saying saying) {
        System.out.println(saying.getId() + "번 명언이 저장되었습니다.");
    }

    public void printSayings(List<Saying> sayings) {
        System.out.println("번호\t\t작가\t\t명언");
        System.out.println("---------------------------");
        for (Saying saying : sayings) {
            System.out.printf("%d \t\t %s \t\t %s\n", saying.getId(), saying.getAuthor(),
                    saying.getContent());
        }
    }
}

'멋쟁이사자처럼 > Project' 카테고리의 다른 글

[명언게시판] level 6  (0) 2023.10.27
[명언게시판] level 4  (0) 2023.10.27
[명언게시판] level 3  (0) 2023.10.27
[명언게시판] level 2  (0) 2023.10.27
[명언게시판] level 1  (0) 2023.10.27
Comments