[Design Pattern] 구조 패턴 2. 어댑터 (Adapter)
Table of Contents
어댑터 (Adapter) #
- 클래스의 인터페이스를 다른 인터페이스로 변환해서 호환시켜준다.
- 특징
- 오래된 코드나 서드파티 코드를 수정 없이 조정할 수 있다.
- 하지만 지속적인 레거시 코드를 사용한다는 장기적인 문제가 있을 수 있다.
개념적인 예시 #
// 이 인터페이스의 GetRequest()를 호출해서
public interface ITarget
{
string GetRequest();
}
// 이 클래스를 사용하고 싶다면?
class Adaptee
{
public string GetSpecificRequest()
{
return "Specific request.";
}
}
// 어댑터를 만든다.
class Adapter : ITarget
{
private readonly Adaptee _adaptee;
public Adapter(Adaptee adaptee)
{
this._adaptee = adaptee;
}
public string GetRequest()
{
return this._adaptee.GetSpecificRequest();
}
}
class Program
{
static void Main(string[] args)
{
Adaptee adaptee = new Adaptee();
// 어댑터를 사용해서 어댑티를 ITarget 인터페이스로 호환시킨다.
ITarget target = new Adapter(adaptee);
Console.WriteLine(target.GetRequest());
}
}