잊지 않겠습니다.

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

  } 

Posted by Y2K
,