[Sprint Mission2 2์ฐจ]

1. ๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ

1-1. File IO๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์˜์†ํ™”

  • ๋‹ค์Œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
    • ํด๋ž˜์Šค ํŒจํ‚ค์ง€๋ช…: com.sprint.mission.discodeit.service.file
    • ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๊ทœ์น™: File[์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„]
    • JCF ๋Œ€์‹  FileIO์™€ ๊ฐ์ฒด ์ง๋ ฌํ™”๋ฅผ ํ™œ์šฉํ•ด ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์„ธ์š”.
    • ๊ฐ์ฒด ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™” ๊ฐ€์ด๋“œ
  • Application์—์„œ ์„œ๋น„์Šค ๊ตฌํ˜„์ฒด๋ฅผ File*Service๋กœ ๋ฐ”๊พธ์–ด ํ…Œ์ŠคํŠธํ•ด๋ณด์„ธ์š”.

1-2. ์„œ๋น„์Šค ๊ตฌํ˜„์ฒด ๋ถ„์„

  • JCF*Service ๊ตฌํ˜„์ฒด์™€ File*Service ๊ตฌํ˜„์ฒด๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์ ์„ ๋ฐœ๊ฒฌํ•ด๋ณด์„ธ์š”.
    • โ€œ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์งโ€๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•ด๋ณด์„ธ์š”.
    • โ€œ์ €์žฅ ๋กœ์งโ€๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•ด๋ณด์„ธ์š”.

1-2. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„

์ฐธ๊ณ : ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๊ฐ€์ง

  • โ€œ์ €์žฅ ๋กœ์งโ€๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ณ„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„ ์–ธํ•˜์„ธ์š”.
    • ์ธํ„ฐํŽ˜์ด์Šค ํŒจํ‚ค์ง€๋ช…: com.sprint.mission.discodeit.repository
    • ์ธํ„ฐํŽ˜์ด์Šค ๋„ค์ด๋ฐ ๊ทœ์น™: [๋„๋ฉ”์ธ ๋ชจ๋ธ ์ด๋ฆ„]Repository
  • ๋‹ค์Œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
    • ํด๋ž˜์Šค ํŒจํ‚ค์ง€๋ช…: com.sprint.mission.discodeit.repository.jcf
    • ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๊ทœ์น™: JCF[์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„]
    • ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ JCF*Service ๊ตฌํ˜„์ฒด์˜ โ€œ์ €์žฅ ๋กœ์งโ€๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์„ธ์š”.
  • ๋‹ค์Œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
    • ํด๋ž˜์Šค ํŒจํ‚ค์ง€๋ช…: com.sprint.mission.discodeit.repository.file
    • ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๊ทœ์น™: File[์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„]
    • ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ File*Service ๊ตฌํ˜„์ฒด์˜ โ€œ์ €์žฅ ๋กœ์งโ€๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์„ธ์š”.

2. ์‹ฌํ™” ์š”๊ตฌ ์‚ฌํ•ญ

2-1. ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•œ ๋ ˆ์ด์–ด ๊ฐ„ ์˜์กด์„ฑ ์ฃผ์ž…

  • ๋‹ค์Œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
    • ํด๋ž˜์Šค ํŒจํ‚ค์ง€๋ช…: com.sprint.mission.discodeit.service.basic
    • ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๊ทœ์น™: Basic[์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„]
    • ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ ์„œ๋น„์Šค ๊ตฌํ˜„์ฒด์˜ โ€œ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์งโ€๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์„ธ์š”.
    • ํ•„์š”ํ•œ Repository ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ•„๋“œ๋กœ ์„ ์–ธํ•˜๊ณ  ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™”ํ•˜์„ธ์š”.
    • โ€œ์ €์žฅ ๋กœ์งโ€์€ Repository ์ธํ„ฐํŽ˜์ด์Šค ํ•„๋“œ๋ฅผ ํ™œ์šฉํ•˜์„ธ์š”. (์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ๋งˆ์„ธ์š”.)
  • Basic*Service ๊ตฌํ˜„์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ด๋ณด์„ธ์š”.

    public class JavaApplication {
        static User setupUser(UserService userService) {
            User user = userService.create("woody", "woody@codeit.com", "woody1234");
            return user;
        }
    
        static Channel setupChannel(ChannelService channelService) {
            Channel channel = channelService.create(ChannelType.PUBLIC, "๊ณต์ง€", "๊ณต์ง€ ์ฑ„๋„์ž…๋‹ˆ๋‹ค.");
            return channel;
        }
    
        static void messageCreateTest(MessageService messageService, Channel channel, User author) {
            Message message = messageService.create("์•ˆ๋…•ํ•˜์„ธ์š”.", channel.getId(), author.getId());
            System.out.println("๋ฉ”์‹œ์ง€ ์ƒ์„ฑ: " + message.getId());
        }
    
        public static void main(String[] args) {
            // ์„œ๋น„์Šค ์ดˆ๊ธฐํ™”
            // TODO Basic*Service ๊ตฌํ˜„์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์„ธ์š”.
            UserService userService;
            ChannelService channelService;
            MessageService messageService;
    
            // ์…‹์—…
            User user = setupUser(userService);
            Channel channel = setupChannel(channelService);
            // ํ…Œ์ŠคํŠธ
            messageCreateTest(messageService, channel, user);
        }
    }
    
    • JCF*Repository ๊ตฌํ˜„์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ด๋ณด์„ธ์š”.
    • File*Repository ๊ตฌํ˜„์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ด๋ณด์„ธ์š”.
  • ์ด์ „์— ์ž‘์„ฑํ–ˆ๋˜ ์ฝ”๋“œ(JCF*Service ๋˜๋Š” File*Service)์™€ ๋น„๊ตํ•ด ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณด์„ธ์š”.

Leave a comment