구조 패턴: 퍼사드 패턴
소개
복잡한 서브 시스템 의존성을 최소화하는 방법이다.
1) 장점
서브 시스템에 대한 의존성을 한 곳으로 모을 수 있다.
2) 단점
퍼사드 클래스가 서브 시스템에 대한 모든 의존성을 가지게 된다.
적용전: 이메일을 전송하는 코드
public class Client {
public static void main(String[] args) {
String to = "[email protected]";
String from = "[email protected]";
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");
message.setText("message");
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
적용후
클래스를 각각 이메일 설정을 담당하는 클래스, 메시지를 담당하는 클래스, 이미지를 보내는 클래스로 각각 나누었다.
1) EmailSettings
@Getter
@Setter
public class EmailSettings {
private String host;
}
2) EmailSender
public class EmailSender {
private EmailSettings emailSettings;
public EmailSender(EmailSettings emailSettings) {
this.emailSettings = emailSettings;
}
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 (MessageingException e) {
e.printStackTrace();
}
}
}
3) EmailMessage
@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 Client {
public static void main(String[] args) {
EmailSettings emailSettings = new EmailSettings();
emailSettings.setHost("127.0.0.1");
EmailSender.emailSender = new EmailSender(emailSettings);
EmailMessage emailMessage = new EmailMessage();
emailMessage.setFrom("zenon");
emailMessage.setTo("xellos");
emailMessage.setCc("alpha");
emailMessage.setSubject("TEST MAIL");
emailMessage.setText("메세지 테스트");
emailSender.sendEmail(emailMessage);
}
}
Author And Source
이 문제에 관하여(구조 패턴: 퍼사드 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zenon8485/구조-패턴-퍼사드-패턴저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)