依赖倒转原则

Posted alexliuf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了依赖倒转原则相关的知识,希望对你有一定的参考价值。

依赖倒转原则:通俗点就是,一个类和其他的类建立关系的时候,尽可能的与它们的父类建立关系,避免与子类建立联系。在设计变量时,能用父类尽量用父类。

 

下面是一道经典例题,我们通过抽象出灯泡类即红灯黄灯各种灯的父类,来让它与台灯建立联系,这样,即使更换灯泡也不用再修改台灯类的代码,并且我们

将发光方法抽象出来,让他的子类各种灯泡去实现他的发光方法。

 

定义一个台灯类,里面有一个开灯方法。
定义一个灯泡类,该类为抽象类,定义发光的方法,它有两 个子类,红灯泡和黄灯泡。
定义一个Test类,写上主函数创建台灯对象调用开灯方法, 实现传入红灯泡打印发红光,传入黄灯泡打印发黄光。

 

public class  TestLight{//测试类
    public static void main(String[] args) {
        Bulb redbulb = new RedBulb();//创建一个红灯泡对象
        Bulb yellowbulb = new YellowBulb();//创建一个黄灯泡对象
        Light light = new Light();//创建一个台灯对象
        light.setLight(redbulb);//将红灯泡放进台灯里面
        light.bulbPower();//打开台灯开关
        light.setLight(yellowbulb);//将黄灯泡放进台灯里面
        light.bulbPower();//打开台灯开关
    }
    
}
class Light{//台灯
    private Bulb bulb;//灯泡属性
    public Light(){}//构造方法
    public Bulb setLight(Bulb bulb){//修改灯泡的方法
        this.bulb = bulb;
        return bulb;
    }
    public void bulbPower(){//台灯开灯方法
        bulb.shine();//调用灯泡发光
    }
}
abstract class Bulb{//灯泡抽象类
    public abstract void shine();//抽象发光方法
}
class RedBulb extends Bulb{//红灯泡继承灯泡类
    public void shine(){//实现灯泡发光方法
        System.out.println("红灯发红光");
    }
}
class YellowBulb extends Bulb{
    public void shine(){
        System.out.println("黄灯发黄光");
    }
}

 

以上是关于依赖倒转原则的主要内容,如果未能解决你的问题,请参考以下文章

依赖倒转原则

大话设计模式之依赖倒转原则

[设计模式]依赖倒转原则

设计模式七大原则之依赖倒转原则

设计模式七大原则之依赖倒转原则

设计模式原则--Dependency Inversion Principle(DIP)--依赖倒转原则