.NET設計模式:工廠方法模式(Factory Method)[4]

發表于:2008-09-28來源:作者:點擊數: 標簽:MethodFactoryNetNET工廠
關鍵字:設計模式 11 if (!HttpApplicationFactory._theApplicationFactory._inited) 12 { 13 lock (HttpApplicationFactory._theApplicationFactory) 14 { 15 if (!HttpApplicationFactory._theApplicationFactory._inited) 16 { 17 HttpApplicationFactory
關鍵字:設計模式

11      if (!HttpApplicationFactory._theApplicationFactory._inited)
12      {
13            lock (HttpApplicationFactory._theApplicationFactory)
14            {
15                  if (!HttpApplicationFactory._theApplicationFactory._inited)
16                  {
17                        HttpApplicationFactory._theApplicationFactory.Init(context);
18                        HttpApplicationFactory._theApplicationFactory._inited = true;
19                  }
20            }
21      }
22      return HttpApplicationFactory._theApplicationFactory.GetNormalApplicationInstance(context);
23}
24

    System.Web.IHttpHandlerFactory

    我們來做進一步的探索,HttpApplication實例需要一個Handler對象來處理資源請求, HttpApplication的主要任務就是找到真正處理請求的類。HttpApplication首先確定了一個創建Handler對象的工廠,來看一下在Machine.config文件中的配置區<httphandlers>,在配置文件注冊了應用程序的具體處理類。例如在Machine.config中對*.aspx的處理將映射到System.Web.UI.PageHandlerFactory 類,而對*.ashx的處理將映射到System.Web.UI.SimpleHandlerFactory 類,這兩個類都是繼承于IhttpHandlerFactory接口的具體類:

    <httpHandlers>

    <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />

    <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory" />

    </httpHandlers>

    這個配置區建立了資源請求的類型和處理請求的類之間的一個映射集。如果一個.aspx頁面發出了請求,將會調用System.Web.UI.PageHandlerFactory類,HttpApplication調用接口IHttpHandlerFactory中的工廠方法GetHandler來創建一個Handler對象。當一個名為sample.aspx的頁面發出請求時,通過PageHandlerFactory將返回一個ASP.SamplePage_aspx對象(具體產品),如下圖:

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97