Unity/C# 개발 노트
SOLID 원칙 의존 역전 원칙 (DIP) 알아보기
WithChan
2025. 3. 25. 07:27
728x90
반응형
의존 역전 원칙(DIP)이란?
의존 역전 원칙은 SOLID 원칙 중 하나로, 변화하기 쉬운 구체적인 클래스(구현체)보다 변화가 적은 추상 클래스(인터페이스)에 의존하라는 원칙입니다. 간단히 말해, 구현 클래스에 의존하지 말고 추상화된 인터페이스에 의존하라는 뜻입니다. 이는 시스템의 유연성과 변화에 대한 대응력을 높여줍니다.
한 줄 요약: 의존 역전 원칙은 구현보단 인터페이스에 의존하도록 조언하는 SOLID 원칙입니다.
Unity와 C#에서 DIP 적용하기
Unity와 C# 환경에서 DI를 적용한 예제를 통해 이를 알아보겠습니다. 이 예제에서는 게임 캐릭터가 무기를 사용하는 상황을 상정합니다. 무기는
인터페이스
로 정의하고, 다양한 무기 종류는
구현 클래스
로 따로 만듭니다.
// 무기 인터페이스 정의
public interface IWeapon {
void Use();
}
// 칼 무기 클래스
public class Sword : IWeapon {
public void Use() {
Debug.Log("You swing the sword.");
}
}
// 활 무기 클래스
public class Bow : IWeapon {
public void Use() {
Debug.Log("You shoot an arrow.");
}
}
// 캐릭터 클래스
public class Character {
private IWeapon _weapon;
// 생성자를 통해 의존성 주입 (Dependency Injection)
public Character(IWeapon weapon) {
_weapon = weapon;
}
public void Attack() {
_weapon.Use();
}
}
// 사용 예시
public class Game : MonoBehaviour {
private void Start() {
IWeapon sword = new Sword();
Character knight = new Character(sword);
knight.Attack(); // You swing the sword.
IWeapon bow = new Bow();
Character archer = new Character(bow);
archer.Attack(); // You shoot an arrow.
}
}
위 코드에서
Character
클래스는
IWeapon
인터페이스에 의존하며, 무기 구현은 생성자를 통해 주입받습니다. 이는 새로운 무기 클래스를 추가하더라도
Character
클래스의 코드를 수정할 필요 없이 확장이 가능함을 의미합니다.
✅ Tip: 이와 같은 방식으로 클래스들 간의 결합도를 낮추면, 요구사항 변경에 유연하게 대응할 수 있습니다.
728x90
반응형
LIST