C#
C# - Adpater Pattern2 C# 코드예제
Dev_Jen
2025. 7. 6. 17:31
반응형
❓
어댑터 패턴에대한 이해도가 부족한거 같아서 다시 GPT에게 물어봐서 다시 공부해봤다. namespace로 Adpater를 정의해야
하는 줄 알았는데 그렇지 않았다. 결론은
🎯 결론
C#에서 어댑터 패턴은 "직접 클래스와 인터페이스로 구현"하는 것이지, 키워드나 특별한 기능이 있는 건 아니야.
✅
오..이건 굉장히 새로운 지식이였다 그냥 클래스와 인터페이스로 구현하는거지 딱히 키워드가 있는게 아니였다
새로운사실! 그래서 한 번 예제 코드로 보겠다!
INewAttack.cs
public interface INewAttack
{
void DoAttack();
}
IOldAttack.cs
public interface IOldAttack
{
void SlashAttack();
}
OldSwordAttack.cs
public class OldSwordAttack : IOldAttack
{
public void SlashAttack()
{
Console.WriteLine("Old sword slashes the enemy!");
}
}
OldSwordAdapter.cs
public class OldSwordAdapter : INewAttack
{
private readonly IOldAttack _oldAttack;
public OldSwordAdapter(IOldAttack oldAttack)
{
_oldAttack = oldAttack;
}
public void DoAttack()
{
// 새 인터페이스를 통해 기존 메서드를 호출
_oldAttack.SlashAttack();
}
}
Program.cs
using System;
class Program
{
static void Main(string[] args)
{
// 레거시 시스템
IOldAttack oldAttack = new OldSwordAttack();
// 어댑터를 통해 새 시스템에 연결
INewAttack adaptedAttack = new OldSwordAdapter(oldAttack);
// 새 시스템의 인터페이스 사용
adaptedAttack.DoAttack();
}
}
💡 요약
- INewAttack: 새 클라이언트 인터페이스
- IOldAttack + OldSwordAttack: 레거시 시스템
- OldSwordAdapter: 어댑터 클래스
- Program.cs: 어댑터를 통해 새 방식으로 레거시 클래스를 사용하는 예
✅
처음에는 이해가 잘 안됐지만 그래도 이렇게 예제 코드로 보니 이해가 좀 됐다!
그냥 간단히 얘기하자면 예전 시스템을 새로운 시스템이랑 연결을 시켜야 하는데 어댑터 패턴을 쓰지 않는다면
굉장히 복잡해지고 어려워 질 것이다. 그래서 어댑터 패턴을 사용하는 것!
반응형