一、依赖倒置原则
1.定义:高层模块不应该依赖底层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
另外一种表述为:
要针对接口编程,不要针对实现编程。
依赖倒置原则的中心思想是面向接口编程。
2.原则:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构,比以细节为基础搭建起来的架构要稳定的多。
3.类之间的耦合:
- 零耦合关系
- 具体耦合关系
- 抽象耦合关系
依赖倒置原则要求客户端依赖于抽象耦合,以抽象方式耦合是依赖倒转原则的关键。
二、依赖倒置原则案例
使用依赖倒置原则
有一个学生,学习进度很快,学习完C#入门到精通以后,又想学习面向对象设计原则。我们可以采用依赖倒置原则:利用一个阅读的抽象接口,使得所有新的知识都继承自这个接口,学生学习的知识可以无限扩充(并继承自阅读器这个接口),这样的话学生类里的执行方法都不许需要发生改变。
namespace _3.依赖倒置原则
{
public interface IReader
{
string GetContent();
}
public class Blog : IReader
{
public string GetContent()
{
return "面向对象设计原则";
}
}
public class Book : IReader
{
public string GetContent()
{
return "《C#入门到精通》";
}
}
public class Student
{
public void Study(IReader reader)
{
Console.WriteLine("学生开始学习新的知识!");
Console.WriteLine(reader.GetContent());
}
}
class Program
{
static void Main(string[] args)
{
Student stu = new Student();
stu.Study(new Blog());
stu.Study(new Book());
Console.ReadKey();
}
}
}