study/소프트웨어 공학

의존성 역전 원칙 (DIP)

836586697769 2024. 5. 16. 16:53

의존성 역전 원칙(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