๐ŸŽฐ Design Pattern

Facade Pattern | ํผ์‚ฌ๋“œ ํŒจํ„ด

์—ฐ_์šฐ๋ฆฌ 2022. 8. 16. 22:01
๋ฐ˜์‘ํ˜•

๋ชฉ์ฐจ

     

     

     

     

    ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์“ฐ์ผ๊นŒ?

    ์ผ์ƒ์ƒํ™œ์—์„œ ์ „๋“ฑ์„ ํ‚ฌ๋•Œ, ์šฐ๋ฆฌ๋Š” ์Šค์œ„์น˜ ํ•˜๋‚˜๋งŒ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค

    ์Šค์œ„์น˜๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ์ „๋“ฑ์ด ์ผœ์ง€๋Š”์ง€ ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ ์•Œ ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ? ์ „ํ˜€์—†๋‹ค

    ํผ์‚ฌ๋“œ ํŒจํ„ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค!

     

     

    ํผ์‚ฌ๋“œ ํŒจํ„ด์ด๋ž€?

    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋ณต์žกํ•œ ์„œ๋ธŒ ์‹œ์Šคํ…œ ์˜์กด์„ฑ์„ ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ถ”์ƒํ™” ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค

     

    ํผ์‚ฌ๋“œ ํŒจํ„ด์€ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ—ฌํผ ์—ญํ• ์ผ ๋ฟ์ด์ง€,

    ์„œ๋ธŒ์‹œ์Šคํ…œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค!

     

    ๋˜ํ•œ ํผ์‚ฌ๋“œํŒจํ„ด์€ ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ์ ์šฉํ•˜๋ฉด ์ด์ ์ด ์žˆ๋Š” ํŒจํ„ด์ด๋‹ค!

     

     

    ์žฅ์ 

    - ์„œ๋ธŒ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ํ•œ๊ณณ์œผ๋กœ ๋ชจ์„ ์ˆ˜ ์žˆ๋‹ค

    - ์„œ๋ธŒ ์‹œ์Šคํ…œ์„ ๊ฐ ์—ญํ• ์— ๋งž๊ฒŒ ๋ถ„๋ฆฌํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

     

     

    ๋‹จ์ 

    - ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์žˆ๋˜ ์˜์กด์„ฑ์ด ๊ทธ๋Œ€๋กœ ํผ์‚ฌ๋“œ ํด๋ž˜์Šค๋กœ ์˜ฎ๊ฒจ์˜ค๊ฒŒ๋œ๋‹ค.

     

     

    ๊ตฌํ˜„์ฝ”๋“œ

    ๊ธฐ์กด์ฝ”๋“œ

    public class Client {
    
        public static void main(String[] args) {
            String to = "keesun@whiteship.me";
            String from = "whiteship@whiteship.me";
            String host = "127.0.0.1";
    
            //๋ฉ”์ผ ์…‹ํŒ… ์„ค์ •
            Properties properties = System.getProperties();
            properties.setProperty("mail.smtp.host", host);
            Session session = Session.getDefaultInstance(properties);
    
            try {
                //๋ฉ”์ผ ๋‚ด์šฉ ์„ค์ •
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from));
                message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                message.setSubject("Test Mail from Java Program");
                message.setText("message");
    
                Transport.send(message);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }

    ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฉ”์ผ์„ ๋ณด๋‚ด๊ธฐ๋งŒ ํ•˜๋ฉด๋œ๋‹ค!

    ์„ค์ •์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ ๊ตณ์ด ํด๋ผ์ด์–ธํŠธ ๋‹จ์— ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

     

     

    ๋ณ€๊ฒฝ์ฝ”๋“œ

    @Getter @Setter
    public class ๐Ÿ’šEmailSettings {
        private String host;
    }
    -------------------------------------------------
    @Getter @Setter
    public class ๐Ÿ’™EmailMessage {
        private String from;
        private String to;
        private String cc;
        private String bcc;
        private String subject;
        private String text;
    }
    public class EmailSender {
    
        private EmailSettings emailSettings;
    
        public EmailSender(๐Ÿ’šEmailSettings emailSettings) {
            this.emailSettings = emailSettings;
        }
    
        /**
         * ์ด๋ฉ”์ผ ๋ณด๋‚ด๋Š” ๋ฉ”์†Œ๋“œ
         * @param emailMessage
         */
        public void sendEmail(๐Ÿ’™EmailMessage emailMessage) {
            Properties properties = System.getProperties();
            properties.setProperty("mail.smtp.host", emailSettings.getHost());
    
            Session session = Session.getDefaultInstance(properties);
    
            try {
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(emailMessage.getFrom()));
                message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailMessage.getTo()));
                message.addRecipient(Message.RecipientType.CC, new InternetAddress(emailMessage.getCc()));
                message.setSubject(emailMessage.getSubject());
                message.setText(emailMessage.getText());
    
                Transport.send(message);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    
    
    }
    public class Client {
    
        public static void main(String[] args) {
            ๐Ÿ’šEmailSettings emailSettings = new EmailSettings();
            emailSettings.setHost("127.0.0.1");
    
            ๐Ÿ’™EmailMessage emailMessage = new EmailMessage();
            emailMessage.setFrom("keesun");
            emailMessage.setTo("whiteship");
            emailMessage.setCc("์ผ๋‚จ");
            emailMessage.setSubject("์˜ค์ง•์–ด๊ฒŒ์ž„");
            emailMessage.setText("๋ฐ–์€ ๋” ์ง€์˜ฅ์ด๋”๋ผ๊ณ ..");
    
            EmailSender emailSender = new EmailSender(๐Ÿ’šemailSettings);
            emailSender.sendEmail(๐Ÿ’™emailMessage);
        }
    }

     

     

    ๋ฐ˜์‘ํ˜•
    • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
    • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
    • ํŠธ์œ„ํ„ฐ ๊ณต์œ ํ•˜๊ธฐ
    • ๊ตฌ๊ธ€ ํ”Œ๋Ÿฌ์Šค ๊ณต์œ ํ•˜๊ธฐ
    • ์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ