1.定义
高层模块不依赖于低层模块。两者依赖于抽象。
抽象不依赖于细节。
细节依赖于抽象。
具体来说,每一个逻辑的实现由原子逻辑组成,不可分割的原子逻辑就是低层模块,原子逻辑的组装就是高层模块。抽象指的是抽象类和接口,不可以实例化;细节指的是实现类,可以实例化。
2.好处
减低类间的耦合性,降低并行开发引起的风险,提高代码的可读性和可维护性。
3.如何实现
面向接口编程,尽量实现每一个类都有接口或则抽象类,或者两者兼有。
static void Main(string[] args)
{
//高层模块zhangsan司机,依赖抽象司机
IDriver zhangsan = new Driver();
//低层模块奔驰,依赖抽象车
ICar ben = new Ben();
//张三开奔驰
zhangsan.Drive(ben);
ICar bmw = new BMW();
//张三开宝马
zhangsan.Drive(bmw);
}
interface IDriver
{
//依赖倒置,依赖于抽象车
void Drive(ICar car);
}
public class Driver : IDriver
{
public void Drive(ICar car)
{
car.Run();
}
}
interface ICar
{
void Run();
}
public class Ben : ICar
{
public void Run()
{
Console.WriteLine("奔驰开动");
}
}
public class BMW : ICar
{
public void Run()
{
Console.WriteLine("宝马开动");
}
}