zoukankan      html  css  js  c++  java
  • 反射实现抽象工厂

      上篇我们说了接口工厂,接下来我们看看抽象工厂

         抽象类用abstract修饰,

         抽象类不能被实例化,抽象方法必须声明在抽象类中,抽象类型不一定不需存在抽象方法,具体派生类必须覆盖基类的抽象方法,抽象派生类可以覆盖基类的抽象方法也可以不覆盖

         这样我们就实现了在基类中添加error方法,子类中无需添加,只需要传error信息就行

         调用方法:

        ICarStract carStract = TcFactory_.GetCarInstance("BenzStract");
            carStract.run();
            carStract.stop();
            carStract.error("BenzStract ");       --基类的error方法

    --------------------------

    public class TcFactory_

    {    

      public TcFactory_()    

      {         //         //TODO: 在此处添加构造函数逻辑         //    

      }    

      public static ICarStract GetCarInstance(string className)    

      {        

        ICarStract car = null;        

        Type type = Type.GetType(className);        

        car = (ICarStract)Activator.CreateInstance(type);        

        return car;    

      }

    }

    public class BenzStract : ICarStract

    {    

      public override void run()    

      {        

        HttpContext.Current.Response.Write("BenzStract run<br/>");    

      }

      public override void stop()    

      {        

        HttpContext.Current.Response.Write("BenzStract stop<br/>");    

      }    

      public void testBenz()    

      {        

        HttpContext.Current.Response.Write("BenzStract test<br/>");    

      }

    }

    public class BmwStract : ICarStract

    {

        public override void run()    

      {        

        HttpContext.Current.Response.Write("BmwStract stop<br/>");    

      }

        public override void stop()    

      {        

        HttpContext.Current.Response.Write("BmwStract stop<br/>");    

      }

    }

    public abstract class ICarStract

    {    

      public abstract void run();    

      public abstract void stop();    

      public void error(string str)    

      {        

        HttpContext.Current.Response.Write(str + "error<br/>");    

      }

    }

  • 相关阅读:
    EF实体框架处理实体之间关联关系与EF延迟机制(下)
    EF Code First Migrations数据库迁移
    EF的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射
    学习Entity Framework 中的Code First
    使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(四)-- Middleware
    学习ASP.NET Core,你必须了解无处不在的“依赖注入”
    EF Code First 学习笔记:表映射 多个Entity到一张表和一个Entity到多张表
    OWIN and Katana
    ASP.NET Core 1.0基础之依赖注入
    Mysql支持的数据类型(总结)
  • 原文地址:https://www.cnblogs.com/ajun/p/2815957.html
Copyright © 2011-2022 走看看