【六大设计原则】依赖倒置原则

261 阅读1分钟

六大设计原则

单一职责原则

里氏替换原则

依赖倒置原则

接口隔离原则

迪米特法则

开放封闭原则

定义

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象

核心思想就是,要面向接口编程,不要面向实现编程。

特点

  1. 模块间的依赖通过抽象发生,实现类之间不直接发生依赖关系,其依赖关系是通过接口或抽象类产生的;

  2. 接口或抽象类不依赖于实现类;

  3. 实现类依赖接口或抽象类。

示例

设计一个顾客

买家从TB购买商品

public class Customer {

    public void shopping(TBShop shop) {
        //购物
        System.out.println(shop.sell());
    }
}

这种设计存在缺点,如果该顾客想从另外一家商店(JD)购物

修改购买商家

public class Customer {

    public void shopping(JDShop shop) {
        //购物
        System.out.println(shop.sell());
    }
}

如果顾客继续想更换商家进行的购物的话,每次更换都需要修改代码,违背了开闭原则。 顾客和具体的商店进行了绑定,而不是依赖抽象,违背了依赖倒置原则。

优化

设计一个Shop

public interface Shop {

    String sell();
}

设计商家的实现

public class JDShop implements Shop {

    @Override
    public String sell() {
        return "从JD购物";
    }
}
public class TBShop implements Shop {

    @Override
    public String sell() {
        return "从TB购物";
    }
}

买家绑定商家的抽象

public class Customer {

    public void shopping(Shop shop) {
        //购物
        System.out.println(shop.sell());
    }
}

购买

public class Client {

    public static void main(String[] args) {
        Customer customer = new Customer();
        customer.shopping(new TBShop());
        customer.shopping(new JDShop());
    }
}

结果

image.png