일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 오라클 캐릭터셋 확인
- Oracle 테이블 띄어쓰기
- oracle
- Oracle 사용자명 입력
- Oracle 18c HR schema
- ORA-00922
- 비전공자를 위한 데이터베이스 입문
- Oracle 18c 설치
- Oracle 윈도우 설치
- 무료 오라클 데이터베이스
- Oracle 초기 사용자
- ora-01722
- Oracle Express Edition
- Orace 18c
- 무료 오라클 설치
- 윈도우 Oracle
- 서평단
- ORA-12899
- oracle 18c
- Oracle 테이블 대소문자
- 오라클 캐릭터셋 조회
- Oracle 18c HR
- Oracle 사용자명
- 오라클 캐릭터셋 변경
Archives
- Today
- Total
The Nirsa Way
[Effective Java 3/E - 객체 생성과 파괴] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 본문
Development/JAVA
[Effective Java 3/E - 객체 생성과 파괴] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
KoreaNirsa 2025. 6. 18. 17:08반응형
자원을 직접 명시할 경우
객체가 직접 필요한 의존 객체를 생성하지 말고 외부에서 주입받도록 하여 결합도를 낮추자는 의미로 사용되며 의존 객체 주입 패턴이라고 불리웁니다. 아래의 코드에서는 자원을 직접 명시하여 특정 구현체에 대하여 강하게 결합된 형태를 확인할 수 있습니다.
public class MailService {
private final MailSender mailSender;
public MailService() {
this.mailSender = new SmtpMailSender(); // 직접 객체 생성
}
public void sendWelcomeMail(String email) {
mailSender.send(email, "어서오세요.", "참여해주셔서 감사합니다.");
}
}
또는 아래와 같이 구현될 수 있습니다.
public class MailService {
private final MailSender mailSender = new SmtpMailSender();
private MailService(){};
public static void sendWelcomeMail(String email) {
mailSender.send(email, "어서오세요.", "참여해주셔서 감사합니다.");
}
}
이렇게 직접 객체를 생성하여 주입하게 되면 강하게 결합되어 확장성이 떨어지기 때문에 유연성, 재사용성, 테스트 용이성이 떨어지게 됩니다.
의존 객체 주입 패턴
의존 객체 주입 패턴은 우리가 알게 모르게 자주 사용되어왔던 패턴으로써 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 방식입니다. 자신이 사용할 객체를 직접 생성하지 않고 외부로부터 주입받는 패턴으로써 주입받는 자원은 인터페이스, 추상 클래스 타입등으로 받으면 결합도가 낮아지며 테스트 용이성이 확보됩니다.
public class MailService {
private final MailSender mailSender;
public MailService(MailSender mailSender) {
this.mailSender = mailSender;
}
public void sendWelcomeMail(String email) {
mailSender.send(email, "어서오세요.", "참여해주셔서 감사합니다.");
}
}
반응형