您的位置:首页 > 其它

反射实现抽象工厂

2012-12-13 11:13 190 查看
  上篇我们说了接口工厂,接下来我们看看抽象工厂

抽象类用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/>");

  }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: