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/>");    

      }

    }

  • 相关阅读:
    18.12.30 【sssx】Trie图
    18.12.30 【sssx】线段树
    18.12.25 POJ 1039 Pipe
    18.12.25 POJ 3525 Most Distant Point from the Sea(半平面+二分)
    18.12.25 POJ 1228 Grandpa's Estate
    18.12.22 luogu P3047 [USACO12FEB]附近的牛Nearby Cows
    18.12.21 DSA 中缀表达式的值
    18.12.21 luogu P3650 [USACO1.3]滑雪课程设计Ski Course Design
    18.12.21 【USACO】Times17
    18.12.20 DSA Full Tank?(DP+BFS)
  • 原文地址:https://www.cnblogs.com/ajun/p/2815957.html
Copyright © 2011-2022 走看看