设计原则——依赖倒转原则(Dependence Inversion Principle)

以下总结自b站尚硅谷视频

1、高层模块不依赖低层模块,二者都应该依赖其抽象

2、抽象不依赖细节,细节应该依赖抽象

3、依赖倒转的中心是面向接口编程

4、依赖倒转原则是基于以下设计理念: 相对于细节的多变性,抽象的东西要稳定得多,以抽象为基础搭建的架构比细节为基础的架构稳定得多。在java中,抽象指的是接口或抽象类,而细节是其具体实现类

5、接口和抽象类的目的是定制好规范,不涉及具体操作,把展示的细节交给实现类完成。抽象和接口主要用于设计!

package com.sjms;

/**
 * 依赖倒置原则
 */
public class DependencyInversion {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());

        //客户端无须改变
        Person2 person2 = new Person2();
        person2.receive(new Email2());
        person2.receive(new WeiXin());
    }
}
class Email{
    public String getInfo(){
        return "电子邮件信息:hello world";
    }
}
//Person类过于依赖Email
class Person{
    public void receive(Email email){
        System.out.println(email.getInfo());
    }
}

//优化——定义接口
interface IReceiver{
    //定义方法,实现类去实现
    public String getInfo();
}
class Email2 implements IReceiver{
    public String getInfo(){
        return "使用Email";
    }
}
class WeiXin implements IReceiver{
    public String getInfo(){
        return "使用WX";
    }
}
//方法2
class Person2 {
    //对接口进行依赖(抽象的!)
    public void receive(IReceiver receiver){
        System.out.println(receiver.getInfo());
    }
}

接口、构造器、setter方法实现依赖倒转

可以参考以下文章

面向对象设计原则(五):依赖倒置原则(DIP)_dip依赖倒置原则-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值