Patterns in SOME –Adapter (class)

来源:互联网 发布:淘宝网3515强人女鞋 编辑:程序博客网 时间:2024/05/22 11:50
Code in C#:
 
namespace Adapter_DesignPattern
{
     using System;
 
     class FrameworkXTarget
     {
         virtual public void SomeRequest(int x)
         {
              // normal implementation of SomeRequest goes here                    
         }
     }
 
     class FrameworkYAdaptee
     {
         public void QuiteADifferentRequest(string str)
         {
              Console.WriteLine("QuiteADifferentRequest = {0}", str);
         }       
     }
 
     class OurAdapter : FrameworkXTarget
     {
         private FrameworkYAdaptee adaptee = new FrameworkYAdaptee();
         override public void SomeRequest(int a)
         {
              string b;
              b = a.ToString();
              adaptee.QuiteADifferentRequest(b);
         }       
     }
 
     ///<summary>
     ///    Summary description for Client.
     ///</summary>
     public class Client
     {
         void GenericClientCode(FrameworkXTarget x)
         {
              // We assume this function contains client-side code that only
              // knows about FrameworkXTarget.
              x.SomeRequest(4);
              // other calls to FrameworkX go here
              // ...
         }
        
         public static int Main(string[] args)
         {
              Client c = new Client();
              FrameworkXTarget x = new OurAdapter();
              c.GenericClientCode(x);
              return 0;
         }
     }
}
Code in SOME:
  
CFrameworkXTarget
       v_SomeRequest(int)
 
CFrameworkYAdaptee
       QuiteADifferentRequest(string)
 
COurAdapter : CFrameworkXTarget,->CFrameworkYAdaptee[_adaptee.()]
       o_SomeRequest(int)
 
CClient
       GenericClientCode(CFrameworkXTarget)
       main
 
 
CClient.main
{
       CClient c.();
       CFrameworkXTarget x<COurAdapter>.();
       c.GenericClientCode(x)
       {
              x.SomeRequest<COurAdapter>(a[4])                               //4 is not index of array,it is just a real object that would be passed by parameter a
              {
                            <%
                            string b;
                            b = a.ToString();
                            %>
                            _adaptee.QuiteADifferentRequest(b);
              };
       };   
}
原创粉丝点击