zoukankan      html  css  js  c++  java
  • 一个HttpHandler的小设计

    例子

     class Program
        {
            static void Main()
            {
                Son s = new Son();
                s.show();
                Console.Read();
            }
        }
        abstract class Father
        {
            public void show()
            {
                doMethod();
            }
            protected abstract void doMethod();
        }
        class Son:Father
        {
            protected override void doMethod()
            {
    
                Console.WriteLine("Son Do Something");
            }
        }

    扩展

    namespace Test
    {
        class Program
        {
            static void Main()
            {
                IHttpHandler person = HttpHandlerFactory.CreateIHttpHandler("Handler");
                person.ProcessRequest();
                Console.Read();
            }
        }
        public interface IHttpHandler
        {
            void ProcessRequest();
        }
        public class HttpHandlerFactory
        {
            public static IHttpHandler CreateIHttpHandler(string type)
            {
                Assembly ass = Assembly.Load("Test");
                Type t = ass.GetType("Test." + type);
                object instance = Activator.CreateInstance(t, true);
                return instance as IHttpHandler;
            }
        }
        public abstract class HandlerBase : IHttpHandler
        {
            public void ProcessRequest()
            {
                doMethod();
            }
            protected abstract void doMethod();
        }
        class Handler : HandlerBase
        {
            protected override void doMethod()
            {
                Console.WriteLine("Son Do Something");
            }
        }
    }

    再扩展

    namespace Test
    {
        public class Context
        {
            public static string Controller = "Handler";
            public static string Action = "";
        }
        class Program
        {
            static void Main()
            {
                HttpHandlerFactory f = new HttpHandlerFactory();
                Console.Read();
            }
        }
        public interface IHttpHandler
        {
            void ProcessRequest();
        }
        public class HttpHandlerFactory
        {
            public HttpHandlerFactory()
            {
                IHttpHandler page = HttpHandlerFactory.CreateIHttpHandler(Context.Controller);
                page.ProcessRequest();
            }
            public static IHttpHandler CreateIHttpHandler(string type)
            {
                Assembly ass = Assembly.Load("Test");
                Type t = ass.GetType("Test." + type);
                object instance = Activator.CreateInstance(t, true);
                return instance as IHttpHandler;
            }
        }
        public abstract class HandlerBase : IHttpHandler
        {
            public void ProcessRequest()
            {
                doMethod();
            }
            protected abstract void doMethod();
        }
        class Handler : HandlerBase
        {
            protected override void doMethod()
            {
                Console.WriteLine("Son Do Something");
            }
        }
    }

    上面就是模拟一般处理程序的流程,一般没有HandlerBase,

     不晓得MVC是不是这样设计的

    namespace Test
    {
        public class Context
        {
            public static string NameSpace = "Test";
            public static string Controller = "Handler";
            public static string Action = "Show";
            public static object[] parameters = new object[] { "hongda", 5 };
        }
        class Program
        {
            static void Main()
            {
                Assembly ass = Assembly.Load(Context.NameSpace);
                Type t = ass.GetType(Context.NameSpace + "." + Context.Controller);
                object obj = ass.CreateInstance(Context.NameSpace + "." + Context.Controller);
                MethodInfo method = t.GetMethod(Context.Action);
                object result = method.Invoke(obj, Context.parameters);
                Console.WriteLine(result.ToString());
                Console.Read();
            }
        }
        public class Handler
        {
            public string Show(string a, int b)
            {
                return a + b;
            }
        } 
    }

     肯定不是,

  • 相关阅读:
    Ubuntu(Linux) + mono + jexus +asp.net MVC3 部署
    爬虫代理
    爬取文件时,对已经操作过的URL进行过滤
    Scrapy项目创建以及目录详情
    Scrapy 框架 安装
    爬虫案例
    爬虫基础以及 re,BeatifulSoup,requests模块使用
    Django_Admin操作
    django 权限管理permission
    Node--01
  • 原文地址:https://www.cnblogs.com/hongdada/p/3044974.html
Copyright © 2011-2022 走看看