Unity로 이해하는 어댑터 패턴 (Adapter Pattern)

2023. 8. 6. 12:52·Unity/Design Pattern
반응형

어댑터 패턴 소개

래퍼 패턴이라고도 하는 어댑터 패턴은 호환되지 않는 두 인터페이스 간의 간격을 연결하여 기존 코드를 변경하지 않고 함께 작동할 수 있도록 합니다. 이 패턴은 소스 코드를 변경하지 않고 기존 클래스를 다른 클래스와 함께 작동시키려는 경우 매우 유용합니다.

어댑터 패턴에 대한 실제 비유는 전원 어댑터입니다. 소켓과 호환되지 않는 플러그가 있는 경우 플러그를 소켓에 원활하게 연결할 수 있는 어댑터를 사용합니다. 어댑터 패턴은 코드에서 호환되지 않는 클래스 또는 인터페이스에 대해 동일한 작업을 수행합니다.

Unity의 어댑터 패턴

어댑터 패턴이 어떻게 작동하는지 설명하기 위해 Player 클래스와 Enemy 클래스가 있는 게임을 생각해 보십시오. 둘 다 공격할 수 있지만 다른 방법을 사용합니다. Player는 Shoot 방법을 사용하고 Enemy는 Fire 방법을 사용합니다.

csharpCopy code
public class Player
{
    public void Shoot()
    {
        Debug.Log("Player is shooting...");
    }
}

public class Enemy
{
    public void Fire()
    {
        Debug.Log("Enemy is firing...");
    }
}

여기서 문제는 Player와 Enemy가 사용하는 일관되지 않은 공격 방법입니다. 이상적으로는 모든 캐릭터가 동일한 '공격' 방법을 사용하는 표준 인터페이스를 원합니다.

여기에서 어댑터 패턴이 작동합니다. ICharacter 인터페이스와 이 인터페이스를 구현하는 EnemyAdapter 클래스를 만들어 봅시다:

csharpCopy code
public interface ICharacter
{
    void Attack();
}

public class EnemyAdapter : ICharacter
{
    private Enemy _enemy;

    public EnemyAdapter(Enemy enemy)
    {
        this._enemy = enemy;
    }

    public void Attack()
    {
        _enemy.Fire();
    }
}

이 예에서 EnemyAdapter는 ICharacter 인터페이스와 Enemy 클래스를 연결합니다. EnemyAdapter에서 Attack이 호출되면 Enemy에서 Fire 메서드를 트리거하여 Player에서 사용하는 Attack 인터페이스와 정렬합니다.

이 설정을 테스트하기 위해 Player 및 EnemyAdapter 개체를 인스턴스화하고 해당 Attack 메서드를 호출합니다.

csharpCopy code
public class Test : MonoBehaviour
{
    void Start()
    {
        Player player = new Player();
        player.Shoot();

        Enemy enemy = new Enemy();
        ICharacter enemyAdapter = new EnemyAdapter(enemy);
        enemyAdapter.Attack();
    }
}

어댑터 패턴을 적용하여 서로 다른 초기 구현에도 불구하고 단일 ICharacter 인터페이스에서 Player 및 Enemy 클래스를 표준화했습니다.

마무리

게임 개발에서 어댑터 패턴은 보다 유지 관리 가능하고 유연하며 일관된 코드를 작성하기 위한 강력한 도구가 될 수 있습니다. 원래 구현을 조정하지 않고 호환되지 않는 클래스를 협력하게 만드는 프로세스를 간소화합니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity > Design Pattern' 카테고리의 다른 글

Unity로 이해하는 상태 패턴 (State Pattern)  (0) 2023.08.09
Unity로 이해하는 옵저버 패턴 (Observer Pattern)  (0) 2023.08.08
Unity로 이해하는 팩토리 패턴 (Factory Pattern)  (0) 2023.08.07
Unity로 이해하는 전략 패턴(Strategy Pattern)  (0) 2023.07.20
Unity로 이해하는 싱글톤 패턴 (Singleton Pattern)  (0) 2023.03.20
'Unity/Design Pattern' 카테고리의 다른 글
  • Unity로 이해하는 옵저버 패턴 (Observer Pattern)
  • Unity로 이해하는 팩토리 패턴 (Factory Pattern)
  • Unity로 이해하는 전략 패턴(Strategy Pattern)
  • Unity로 이해하는 싱글톤 패턴 (Singleton Pattern)
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
  • 전체
    오늘
    어제
    • 분류 전체보기 (529) N
      • 상품 추천 (41) N
      • MongoDB (4)
      • 하드웨어 (9) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (127)
        • Basic (40)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (48)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 다비즈
  • 공지사항

  • 인기 글

  • 태그

    믈레코비타멸균우유
    C#
    셀레니움
    Python
    unity
    devlife
    codingcommunity
    리스트
    codingtips
    appdevelopment
    learntocode
    카페24리뷰
    리뷰이관
    스크립트 실행
    상품 리뷰 크롤링
    스마트스토어리뷰
    programming101
    긴유통기한우유
    리뷰관리
    쇼핑몰리뷰
    라떼우유
    list
    스크립트 실행 순서
    programmerlife
    cv2
    rtsp
    카페24리뷰이관
    파이썬
    유니티
    ipcamera
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Unity로 이해하는 어댑터 패턴 (Adapter Pattern)
상단으로

티스토리툴바