软件测试开发技术.NET设计模式:工厂方法模式(Factory Method)[5]

发表于:2009-09-03来源:作者:点击数: 标签:软件测试MethodFactoryNetNET
软件测试 开发技术 .NET设计模式:工厂方法模式(Factory Method)[5] .NET开发 关键字:设计模式 IHttpHandlerFactory工厂: 1public interface IHttpHandlerFactory 2{ 3 // Methods 4 IHttpHandler GetHandler(HttpContext context, string requestType,

软件测试开发技术.NET设计模式:工厂方法模式(Factory Method)[5]  .NET开发

关键字:设计模式  IHttpHandlerFactory工厂:

1public interface IHttpHandlerFactory
2{
3      // Methods
4      IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated);
5      void ReleaseHandler(IHttpHandler handler);
6}
7

    IHttpHandlerFactory.GetHandler是一个工厂方法模式的典型例子,在这个应用中,各个角色的设置如下:

    抽象工厂角色:IHttpHandlerFactory

    具体工厂角色:PageHandlerFactory

    抽象产品角色:IHttpHandler

    具体产品角色:ASP.SamplePage_aspx

    进一步去理解

    理解上面所说的之后,我们就可以去自定义工厂类来对特定的资源类型进行处理。第一步我们需要创建两个类去分别实现IHttpHandlerFactory 和IHttpHandler这两个接口。


 1public class HttpHandlerFactoryImpl:IHttpHandlerFactory {
 2  
 3   IHttpHandler IHttpHandlerFactory.GetHandler(
 4      HttpContext context, String requestType,
 5      String url, String pathTranslated ) {
 6
 7         return new HttpHandlerImpl();
 8        
 9   }//IHttpHandlerFactory.GetHandler
10
11   void IHttpHandlerFactory.ReleaseHandler(
12      IHttpHandler handler) { /**//*no-op*/ }
13
14}//HttpHandlerFactoryImpl
15
16public class HttpHandlerImpl:IHttpHandler {
17
18   void IHttpHandler.ProcessRequest(HttpContext context) {
19     
20      context.Response.Write("sample handler invoked");
21     
22   }//ProcessRequest
23
24   bool IHttpHandler.IsReusable { get { return false; } }
25
26}//HttpHandlerImpl
27

    第二步需要在配置文件中建立资源请求类型和处理程序之间的映射。我们希望当请求的类型为*.sample时进入我们自定义的处理程序,如下:

 

原文转自:http://www.ltesting.net