- 개념
구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다.
쉽게말하면 게임에서 플레이어가 무기를 사용하는 함수를 만들어야 한다고 해보자.
무기가 하나는 아닐 것이기 때문에 각각의 무기마다 사용해하는 함수를 만들어야 할것이다.
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 |
---|