总而言之:高层模块不应该依赖于底层模块,都应该依赖于抽象。应该面向接口编程,而不是实现编程,抽象不应该依赖于具体,具体应该依赖于抽象。
具体代码如下,
public interface ICar
{
void Run();
void Stop();
}
public class BondaCar:ICar
{
public void Run()
{
Console.WriteLine("本田车行驶");
}
public void Stop()
{
Console.WriteLine("本田车停止");
}
}
public class Foute:ICar
{
public void Run()
{
Console.WriteLine("福田车启动");
}
public void Stop()
{
Console.WriteLine("福田车停止");
}
}
public class Jeep : ICar
{
public void Run()
{
Console.WriteLine("吉普车启动");
}
public void Stop()
{
Console.WriteLine("吉普车停止");
}
}
public class AutoSystem
{
ICar car;
public AutoSystem(ICar type)
{
this.car = type;
}
public void RunCar()
{
this.car.Run();
}
public void StopCar()
{
this.car.Stop();
}
}