设计模式<依赖倒置>

原创 2016年05月31日 20:05:46

依赖

  • 什么是依赖,如果一个类中使用到了这样的代码 ,AutoDrive就依赖于Baoma。 AutoDrive 是高级模块,Baoma 是低级模块。
class AutoDrive{
    Baoma car=new Baoma();
    public void turnLeft()
         {
            car.turnLeft();
        }
class  Baoma{}
  • 这样做的坏处是什么。类与类直接依赖与细节,那么他们之间就有耦合。当需要把宝马替换成奥迪时。我们又需要改动AutoDrive 的代码。

什么是依赖倒置

  • 高层模块不应该依赖低层模块,两者都应该依赖于抽象。
  • 抽象不应该依赖于细节,细节依赖于抽象。

实现

创建抽象:

interface Icar{
    void turnLeft();
    void turnRIght();
    void GoStraight();
}
  • 高级模块 如何依赖于抽象:采用依赖注入。
class AutoDrive{
    private  Icar mCar=null;
    public void setCar( Icar car){
        mCar=car;
    }
        public void turnLeft()
         {
            mCar.turnLeft();
        }
}

class  Baoma implements Icar{
    @Override
    public void turnLeft() {
        // turn left
    }

    @Override
    public void turnRIght() {
        //turn right
    }

    @Override
    public void GoStraight() {
        // go straight
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式六大原则(3):依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A...

设计模式六大原则(3):依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A...

设计模式六大原则——依赖倒置原则

设计模式六大原则依赖倒置原则 概念 问题描述 问题由来 解决办法 示例 设计模式六大原则——依赖倒置原则概念 依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细...

JAVA设计模式(二十五)——依赖倒置原则

1、依赖倒置原则         依赖倒置原则(Dependence Inversion Principle),简称DIP。首先来看看英文的定义吧,如下一长段: High level mo...

设计模式六大原则(3):依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,...

天天学设计模式6-依赖倒置原则和接口隔离原则

依赖倒置原则定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 我觉的这个定义写的不是很好,这个定义里面有个误区就是高层模块和底层模块,假设有个class...

设计模式六大原则:依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般...
  • eddle
  • eddle
  • 2012-03-05 23:21
  • 616

设计模式六大原则之依赖倒置原则

本文参考《设计模式之禅》一书。 依赖倒置原则(Dependence Inversion Principle,DIP)定义: High level modules should not depend ...

设计模式原则(3):依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)