依赖倒置原则

依赖倒置原则

依赖倒置原则(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:依赖倒置原则重点在与依赖,先不要喷,针对这样的接口抽象的概念很多,但是通过这个栗子我们能够看到,重点在于处理依赖对象的思想。

原文地址:https://www.cnblogs.com/xiaoch/p/13417976.html