Sunday, May 17, 2015

Provider design pattern提供程序模式

提供程序模式是一个简单的模式,主要是为了减少代码复用而提高代码重用率而设计的模式,只在.Net框架中提供。ProviderBase是.Net提供的基础类. 它其实是继承的一种变体,从xml中读取各种继承的类的名字,从而一起调用一个基类方法实现不同类的同一行为。
下面是一个例子,用于得到不同酒店的价格。

public abstract class HotelProviderBase : ProviderBase
{
       int RunId;
       void setProxy(String proxy){}
       public abstract void UpdateHotels(JobRequest request, int runId);
}

public sealed class ExampleHotelProvider : HotelProviderBase
{
       private void UpdateHotel(JobRequest request){}    
}


public abstract class HotelProviderManager
{
         private static void LoadProviders()
        {
                //load class from hotel.xml
                 _providers = new HotelProviderCollection();
                 ProvidersHelper.InstantiateProviders(section.Providers, _providers, typeof(HotelProviderBase));
        }
}


public sealed class HotelManager 
{
        public void onRun()
       {
                  foreach (HotelProviderBase provider in HotelProviderManager.Providers)
                  {
                            if (provider.Enabled)
                            {
                                provider.UpdateHotels(request, (int)Log.RunId);
                            }
                   }
          }
}

hotel.xml
<add name="ExampleHotelProvider"
         type="ExampleHotelProvider"
         siteId="4"
         siteName="http://www.example.com"
         tableName="HotelRates_Example_Hotels">

http://www.cnblogs.com/webabcd/archive/2007/01/22/626479.html

No comments:

Post a Comment