zoukankan      html  css  js  c++  java
  • 依赖倒置原则

    依赖倒置原则

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

  • 相关阅读:
    实验二 Java语言基础
    实验一 熟悉Java程序开发环境
    进程间通信
    2020系统综合实践大作业
    树莓派picamera模块的基本使用
    树莓派(Raspberry Pi)基本配置
    软工实践个人总结
    Beta版本演示
    Functional mechanism: regression analysis under differential privacy_阅读报告
    《ENSEMBLE ADVERSARIAL TRAINING: ATTACKS AND DEFENSES》 _论文学习报告
  • 原文地址:https://www.cnblogs.com/xiaoch/p/13417976.html
Copyright © 2011-2022 走看看