의존성 역전 원칙(Dependency Inversion Principle)이란?
객체가 어떤 클래스를 참조할 때, 하위 요소의 구체적인 내용에 의존하면 하위 요소 내용에 변화가 있을 때마다 상위 요소의 코드를 수정해야 함 → 변하기 쉬운 것에 영향받지 않게 하기 위해, 이미 구체적으로 구현된 하위 모듈에 의존하지 않고 그 대상의 상위 요소 (인터페이스나 추상 클래스)를 참조하라는 원칙
DIP의 장점
- 프로그램의 유연성과 확장성 ↑
- 코드 재사용성 ↑
- 테스트 용이성 ↑
- 코드 결합도 ↓
DIP 사용 전
class Pizza {
eat() {
console.log("eat pizza");
}
}
class Hamburger {
eat() {
console.log("eat hamburger");
}
}
class User {
start() {
const pizza = new Pizza();
pizza.eat();
const hamburger = new Hamburger();
hamburger.eat();
}
}
const user = new User();
user.start();
DIP 사용 후
interface Food {
eat(): void;
}
class Pizza implements Food {
eat() {
console.log("eat pizza");
}
}
class Hamburger implements Food {
eat() {
console.log("eat hamburger");
}
}
class User {
private food: Food;
constructor(food: Food) {
this.food = food;
}
start() {
this.food.eat();
}
}
const pizzaUser = new User(new Pizza());
pizzaUser.start(); // eat pizza
const hamburgerUser = new User(new Hamburger());
hamburgerUser.start(); // eat hamburger
'study > 소프트웨어 공학' 카테고리의 다른 글
MVC 패턴 (0) | 2024.05.30 |
---|---|
DI와 DIP (0) | 2024.05.30 |
의존성 주입 (DI) (0) | 2024.05.16 |
단위 테스트의 FIRST 원칙 (0) | 2024.04.16 |
소프트웨어 개발 3대 원칙: KISS, YAGNI, DRY (0) | 2023.12.08 |