⭐ 어댑터 패턴이란?
서로 호환되지 않는 클래스나 시스템을 연결할 때, 중간에 "변환기(어댑터)"를 두어 기존 코드를 바꾸지 않고도 호환되게 만드는 패턴입니다. 서로 다른 인터페이스를 가진 클래스들을 함께 작동하게 하고 싶을 때 사용합니다.
⭐ 어댑터 패턴의 구성 요소
● Target (목표 인터페이스): 클라이언트가 기대하는 인터페이스
● Adaptee (적응될 클래스): 기존에 존재하는 클래스, 인터페이스가 달라서 바로 사용할 수 없음
● Adapter (어댑터): Target 인터페이스를 구현하고, 내부적으로 Adaptee를 호출하여 변환
⭐ 어댑터 패턴의 장단점
● 장점
○ 기존 코드를 수정하지 않고 새로운 클래스 추가 가능
○ 서로 호환되지 않는 인터페이스를 연결 가능
○ OCP(Open-Closed Principle, 개방-폐쇄 원칙) 준수
● 단점
○ 어댑터 클래스가 많아지면 오히려 코드가 복잡해짐
○ 단순히 호환성만 제공, 근본적인 설계 문제는 해결되지 않음
⭐ 어댑터 패턴 예시
● Zombie.cs
public class Zombie : MonoBehaviour
{
public void Bite()
{
Debug.Log("Zombie bite!");
}
}
● Alien.cs
public class Alien : MonoBehaviour
{
public void Shoot()
{
Debug.Log("Alien shoot!");
}
}
● Alien을 Zombie로 바꾸는 어댑터
public class AlienAdapter : Alien
{
private Alien alien;
public AlienAdapter(Alien alien)
{
this.alien = alien;
}
public void Bite()
{
alien.Shoot();
}
}
● MonsterManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterManager : MonoBehaviour
{
private Zombie _zombie;
private Alien _alien;
private AlienAdapter _alienAdapter;
public void Start()
{
_zombie = new Zombie();
_alien = new Alien();
_alienAdapter = new AlienAdapter(_alien);
_zombie.Bite();
_alienAdapter.Bite();
}
}
● MonsterManager 클래스를 통해 다양한 종류의 몬스터 공격을 Attack으로 실행하고 싶음
○ Zombie와 Alien 클래스를 보면 공격 메서드가 다름 → AlienAdapter를 이용해 Alien도 Bite로 공격 가능
'개발, IT > 디자인 패턴 & 알고리즘' 카테고리의 다른 글
| [디자인 패턴] MVC, MVP, MVVM 패턴 (0) | 2025.11.12 |
|---|---|
| [디자인 패턴] 옵저버 패턴 (Observer Pattern) (0) | 2025.10.22 |
| [디자인 패턴] Object Pooling (오브젝트 풀링) (0) | 2025.09.30 |
| [알고리즘] 그래프 탐색 알고리즘 DFS & BFS (0) | 2025.09.26 |
| [디자인 패턴] 싱글턴 패턴 (Singleton Pattern) (0) | 2025.09.16 |