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