闲谈设计模式之依赖倒置原则

依赖倒置原则(Dependence Inversion Principe)

依赖倒置原则:俗称DIP,其含义为高层和底层不能直接依赖,而是通过依赖抽象,而抽象不依赖与细节,细节依赖于抽象。
通过这种方式,仅需要将抽象实例化,高层对底层调用或者通信,仅仅调用抽象的实例,通过这样的方式减少高层与底层的耦合性,达到解耦的作用。

代码示例

接下来以Android设计源码模式中的示例代码进行分析。

Android源码设计模式示例代码

不知道大家是否还记得此图:
在这里插入图片描述
这张图不是OCP示例中的UML图吗?对的,但它也能体现出DIP,把ImageLoader看成是高层模块对网络中的图片地址进行下载选择相应的缓存模式加载图片缓存图片。那么缓存模式ImageCache就可以看成底层模块,但是这一底层模块是一个抽象的类型,通过开发人员设置不同或者实现不同的ImageCache进行实例化。而ImageCache本身就是一个抽象,不依赖于任何的细节的实现。
相关代码如下:

public class ImageLoader {
    //获取图片缓存
    ImageCache imageCache = null;
    
    public void setImageCache(ImageCache imageCache) {
        this.imageCache = imageCache;
    }
 }
 public interface ImageCache {
    void put(String url, Bitmap bitmap);

    Bitmap get(String url);
}

结合OCP、LSP、DIP都不难看出其重点核心思想就是抽象。

总结

OCP、LSP、DIP共有一个核心思想就是抽象解耦,但是OCP注重与内部不可修改对于新的特性和功能可通过拓展的形式去解决;而LSP在于子类被当作父类使用的时候,其子类的行为特性是不变的,避免影响现有程序的功能特性的重要原则;DIP核心就是利用抽象的实现,使得高低层的通信是该实现负责去处理,减低高低层耦合度,避免耦合冗重。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值