본문 바로가기
이론/디자인패턴

2. 브릿지(Bridge) 패턴

by 사과잼빵 2015. 7. 24.

- 개념

구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다.

쉽게말하면 게임에서 플레이어가 무기를 사용하는 함수를 만들어야 한다고 해보자.

무기가 하나는 아닐 것이기 때문에 각각의 무기마다 사용해하는 함수를 만들어야 할것이다.

class Player

{

public:

void useSword();

void useGun();

void useBow();

}


이렇게 코드를 작성할 경우 코드가 지저분해지게 되어 가독성이 떨어지게 되며 유지보수 시 문제를 겪게 될것이 당연하다. 더 나아가 Player가 여러 캐릭터로 분화 될 경우 각각의 캐릭터마다 이러한 함수들을 만들게 되야 할 것이고 좋지 못한 코드가 된다.

그래서 브릿지 패턴을 사용하게 되는데 브릿지 패턴의 경우 다음과 같이 코드를 작성 할 수 있다.


class Player

{

public:

void useWeapon(CWeapon* pWeapon);

위 클래스의 useWeapon 함수는 다음과 같이 정의된다.

void useWeapon(CWapon* pWeapon)

{

pWeapon->Use();

}

class Weapon

{

private:

char Name[50];

WeaponBridge* pBridge;


public:

virtual void Use()

{

pBridge->Use();

}

}

class WeaponBridge

{

virtual void Use() = 0;

}


class Sword : public WeaponBridge

{

void Use(){ 칼공격 }

}

class Gun: public WeaponBridge

{

void Use(){총 공격}

}

class Bow : public WeaponBridge

{

void Use(){활공격}

}


'이론 > 디자인패턴' 카테고리의 다른 글

1. 싱글톤(Singleton)패턴  (0) 2015.06.13