IOldBookStoreSystem을 구현한 OldBookStore을 아래와 같이 구현되어 있는 NewBookStore에서 사용하고자 할때.
같은 또는 비슷한 기능들이 각기 다른 interface로 구현되어 있을때 사용하는 pattern이 된다.
public class NewBookStore
{
public INewBookStoreSystem bookStoreSystem;
}
public interface INewBookStoreSystem
{
void BuyBook(string isbnNumber, string cardNumber);
void ChangeBook(string cardNumber);
}
//OldBookStore
public interface IOldBookStoreSystem
{
void BuyBook(string bookTitle, int costMoney);
void ChangeBook(string bookTitle, DateTime buyDate);
void CloseStore();
}
public class OldBookStore : IOldBookStoreSystem
{
public void BuyBook(string bookTitle, int costMoney)
{
Console.WriteLine("Buy book Title");
}
public void ChangeBook(string bookTitle, DateTime buyDate)
{
Console.WriteLine(string.Format("Change Book : {0}", buyDate));
}
public void CloseStore()
{
Console.WriteLine("Close the store.");
}
}
이때에 새로운 INewBookStoreSystem을 이용. (INewBookStoreSystem이 adapter interface가 된다.)
public class OldBookStoreAdapter : INewBookStoreSystem
{
OldBookStore oldBookStore = new OldBookStore();
#region INewBookStoreSystem Members
public void BuyBook(string isbnNumber, string cardNumber)
{
//NOTE : Find book title using isbn number
string bookTitle = string.Empty;
//NOTE : send bill
int price = 1000;
oldBookStore.BuyBook(bookTitle, price);
}
public void ChangeBook(string cardNumber)
{
//NOTE : Find card list using cardNumber
//NOTE : Find bookTItle and buyDate
DateTime buyDate = DateTime.Now;
string bookTitle = string.Empty;
oldBookStore.ChangeBook(bookTitle, buyDate);
}
#endregion
}