728x90
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
의존이란?
객체지향 프로그래밍에서 한 객체가 다른 객체를 이용한다는 것은, 다른 객체를 생성하거나 다른 객체의 메소드를 호출하는 행위를 말한다.
한 객체가 다른객체를 생성 또는 메소드를 호출할 때, 그 객체에 의존한다고 표현한다.
public class Cage
{
private Animal animal;
public Cage()
{
this.animal = new Cat();
}
public void animalHello()
{
animal.hello();
}
}
public class Animal
{
...
}
public class Cat extends Animal
{
...
}
public class Dog extends Animal
{
...
}
위 코드에는 문제가 있다.
결합도
Cage 클래스와 Animal 클래스가 강하게 결합되어있다.
이 경우 Cage의 구현이 변경되거나 다른 동물을 사용해야할 경우 Cage의 클래스도 수정해야한다.
의존 객체 주입(DI)
DI가 위 문제의 해결법이 된다.
Cage의 동물을 고정해서 사용하는 것이 아닌, 인스턴스를 생성할 때 필요한 동물을 생성자에 넘겨주는 방법이다.
public class Cage
{
private Animal animal;
public Cage(Animal animal)
{
this.animal = Objects.requireNonNull(animal);
}
public void animalHello()
{
animal.hello();
}
}
public class Animal
{
...
}
public class Cat extends Animal
{
...
}
public class Dog extends Animal
{
...
}
위 코드로 하면 인스턴스를 생성할 때 필요한 동물을 넘겨줄 수 있다.
장점
- 유연성이 높다.
- 테스트가 용이하다.
단점
- 의존성이 많을수록 코드가 오히려 어지럽다.
728x90
'EFFECTIVE JAVA' 카테고리의 다른 글
EFFECTIVE JAVA TIL 07 - 객체 생성과 파괴 / 아이템 7 (2) | 2024.07.25 |
---|---|
EFFECTIVE JAVA TIL 06 - 객체 생성과 파괴 / 아이템 6 (0) | 2024.07.25 |
EFFECTIVE JAVA TIL 04 - 객체 생성과 파괴 / 아이템 4 (0) | 2024.07.24 |
EFFECTIVE JAVA TIL 03 - 객체 생성과 파괴 / 아이템 3 (0) | 2024.07.24 |
EFFECTIVE JAVA TIL 02 - 객체 생성과 파괴 / 아이템 2 (1) | 2024.07.24 |