依赖倒置原则
依赖倒置原则
依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。百度百科
为什么会出现这个原则呢?
QTMD~!
所有的一切都源于变化,现在ORM足够强大了,看一下他的源码也会发现,工厂、接口的使用都是为了更好的扩展。
举个简单的例子
你的老师让你写了一个“猪”类,实现了他的移动方法,代码如下
public class Pig{
public void Move(){
console.write("在田野间奔跑");
}
}
public class Client{
public void Main(Pig p){
p.Move();//output 在田野间奔跑
}
}
第二天你上交了作业,老师看见点点头,做的好(鬼知道是在夸你还是在说反话),现在你在给我写一个“大雁”,“鱼”类,并且实现Move方法。
当然你看到这个觉得都是小事一桩,你开始Copy Pig类,之后你发现你的客户端只认识Pig类,如果要调用其他的那么需要修改Client,这就违反了开放关闭原则,那么怎么办呢?
改变Client的依赖,不再依赖Pig,而是依赖接口,依赖抽象类。
那么我们修改一下这个代码:
interface IAnimal {
Move();
}
public class Pig:IAnimal {
public void Move(){
console.write("在田野间奔跑");
}
}
public class Fish:IAnimal {
public void Move(){
console.write("在大海里畅游");
}
}
public class Client{
public void Main(IAnimal a){
a.Move();//output 取决于实现类的实现方法
}
}
这就OK啦~!
ps:依赖倒置原则重点在与依赖,先不要喷,针对这样的接口抽象的概念很多,但是通过这个栗子我们能够看到,重点在于处理依赖对象的思想。