package com.haenin.section05.dependencyinversion.resolved;
public class Application {
public static void main(String[] args) {
MessageSender emailSender = new EmailSender();
MessageSender smsSender = new SMSSender();
NotificationService emailService = new NotificationService(emailSender);
NotificationService smsService = new NotificationService(smsSender);
emailService.sendNotification("이메일로 발송될 공지입니다.");
smsService.sendNotification("SMS으로 발송될 공지입니다.");
}
}
package com.haenin.section05.dependencyinversion.resolved;
public interface MessageSender {
void sendMessage(String message);
}
package com.haenin.section05.dependencyinversion.resolved;
public class EmailSender implements MessageSender{
@Override
public void sendMessage(String message) {
System.out.println("이메일 발송: " + message);
}
}
package com.haenin.section05.dependencyinversion.resolved;
public class SMSSender implements MessageSender{
@Override
public void sendMessage(String message) {
System.out.println("SMS 발송: " + message);
}
}
package com.haenin.section05.dependencyinversion.resolved;
public class NotificationService {
private final MessageSender messageSender;
public NotificationService(MessageSender messageSender) {
this.messageSender = messageSender;
}
public void sendNotification(String message){
messageSender.sendMessage(message);
}
}