Guushuuse .NET

领域驱动设计==哲学

导航

DotNet Framework源代码中的模式(七)——Factory Method(工厂模式)

 

定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。

 

.NET Framework 2.0 System.WebSystem.Web.UI中类为例

 

System.Web.IHttpHandler

public interface IHttpHandler
{
    
bool IsReusable { get; }
    
void ProcessRequest(HttpContext context);
}

 

System.Web.IHttpHandlerFactory2

 

public interface IHttpHandlerFactory2
{
    IHttpHandler GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath);
}

 

System.Web.UI.Page

Code

 

System.Web.UI.PageHandlerFactory

Code

 

默认Web.Config配置

Code

 

IHttpHandlerFactory2IHttpHandler的工厂,通过它来生成不同的HttpHandler对象。

HttpHandler是一个HTTP请求的真正处理中心,也正是在这个HttpHandler容器中,ASP.NET Framework才真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。一个HTTP请求都是最终交给一个HttpHandler容器中的ProcessRequest方法来处理的。

HttpHandlerFactory,是一个HTTP请求到达这个HttpHandler Factory时,HttpHandlerFactory会提供出一个HttpHandler容器,交由这个HttpHandler容器来处理这个HTTP请求。对于ASPX页面,ASP.NET Framework在默认情况下是交给System.Web.UI.PageHandlerFactory这个HttpHandlerFactory来处理的。

 

在以下情况下,适用于工厂方法模式:

1. 当一个类不知道它所必须创建的对象的类的时候。

2. 当一个类希望由它的子类来指定它所创建的对象的时候。

3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

posted on 2009-05-16 21:35  guushuuse  阅读(1743)  评论(3编辑  收藏  举报