反射实现抽象工厂
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/>");
}
}
抽象类用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/>");
}
}
相关文章推荐
- 三层架构之抽象工厂加反射----实现数据库转换
- 抽象工厂试用反射实现创建工厂
- 【.NET机房重构】——再看抽象工厂加反射实现登录
- 三层架构之抽象工厂加反射——实现数据库转换
- 三层架构之抽象工厂加反射----实现数据库转换
- 三层架构之抽象工厂加反射----实现数据库转换
- 三层架构之抽象工厂加反射----实现数据库转换
- C#结合反射实现抽象工厂
- java使用dom4j解析xml配置文件实现抽象工厂反射示例
- java通过反射机制实现工厂设计模式
- javaweb项目中利用反射实现工厂模式
- 利用抽象、多态实现无反射的绿色环保ORM框架
- C#反射和抽象工厂的结合
- java:运用工厂模式+反射实现可插拔的程序
- 自己在项目中的学习总结:利用工厂模式+反射机制+缓存机制,实现动态创建不同的数据层对象接口
- 实现抽象工厂
- C#回顾 - 7.如何使用反射实现工厂模式?
- java 枚举和反射 实现简单的工厂模式
- 抽象工厂加反射(一)
- [记]SAF 中抽象工厂的实现