개인 공부/디자인패턴

디자인패턴 브릿지

smallship 2024. 7. 15. 13:46

디자인 패턴에서 브리지(Bridge) 패턴은 구조적 디자인 패턴이다. 구현부에서 추상층을 분리하여 각각을 독립적으로 변형할 수 있게 해준다. 이는 두 개의 계층(추상화 계층과 구현 계층)을 독립적으로 확장할 수 있는 유연성을 제공한다.

 

간단하게 예를 들면 운송 수단을 설계할 때, 추상적인 '운송 수단'에 대한 기능을 추상화 계층에서 정의하고, 그 운송 수단들이 어떻게 구체적으로 동작하는지는 구현 계층에서 구현한다. 이를 통해 추상화 계층의 변경 없이 구현 계층을 바꿀 수 있는 장점을 얻을 수 있다.

 

 


또 다른 예를 유니티에서 이해해보자

public interface IWeapon
{
    void UseWeapon();
}

public class Sword : IWeapon
{
    public void UseWeapon()
    {
        Debug.Log("검의 조합이다");
    }
}

public class Staff : IWeapon
{
    public void UseWeapon()
    {
        Debug.Log("지팡이 조합이다");
    }
}

public abstract class Character
{
    protected IWeapon myWeapon;

    public Character SetWeapon(IWeapon weapon)
    {
        myWeapon = weapon;
        return this;
    }

    public abstract void Attack();
}

public class Warrior : Character
{
    public override void Attack()
    {
        Debug.Log("전사의 공격이다");
        myWeapon.UseWeapon();
    }
}

public class Mage : Character
{
    public override void Attack()
    {
        Debug.Log("마법사의 공격이다");
        myWeapon.UseWeapon();
    }
}

public class BridgePatternExample : MonoBehaviour
{
    void Start()
    {
        Character warrior = new Warrior().SetWeapon(new Sword());
        warrior.Attack();
        
        Character mage = new Mage().SetWeapon(new Staff());
        mage.Attack();
    }
}

 

Character 클래스가 추상화를 나타내며, IWeapon 인터페이스가 구현 계층을 나타내고 있다. Warrior와 Mage 클래스는 각각 Character를 상속받아 추상화를 확장하고, SetWeapon 메서드를 통해 구현 계층인 IWeapon과 연결한다.

 


 

브리지 패턴은 추상화와 구현을 분리하여 시스템을 더욱 유연하고 확장 가능하게 만드는 중요한 디자인 패턴 중 하나이다. 이를 통해 소프트웨어 시스템의 설계를 단순화하고, 유지보수성을 높이며, 확장성을 개선할 수 있다.

'개인 공부 > 디자인패턴' 카테고리의 다른 글

디자인패턴 퍼사드  (0) 2024.07.15
디자인패턴 데코레이터  (0) 2024.07.15
디자인패턴 싱글톤  (0) 2024.07.12
디자인패턴 프로토타입  (0) 2024.07.12
디자인패턴 빌더  (1) 2024.07.12