设计模式六大原则---依赖倒置原则(DIP)

简介: <h1><span style="font-size:18px">    </span><span style="font-size:24px">定义</span></h1> <p><span style="font-size:24px">   </span><span style="font-size:18px">依赖倒置原则(Dependency Inversion Princi

    定义

   依赖倒置原则(Dependency Inversion Principle)

    核心思想:依赖于抽象

    具体体现:

        体现一:高层模块不应该依赖低层模块。两个都应该依赖抽象。

        体现二:抽象不应该依赖细节。细节应该依赖抽象。

    依赖倒置原则告诉我们:细节是多变的,而抽象是相对稳定的。所以我们编程的时候要注重抽象的编程,而非细节编程。

     实例

    1、AGP插槽:主板和显卡之间的关系的抽象。主板和显卡通常是使用AGP插槽来连接的,这样,只要接口适配,不管是主板还是显卡更换,都不是问题。

      2、驾照:司机和汽车之间关系的抽象。有驾照的司机可以驾驶各种汽车。

      3、电源插座。

      下面我们用一个灯的开关的实例来展示:

       Switch(开关)、Light(灯),统一一个接口IDevices,让Switch和light都继承这个接口,而且这个接口有两个方法,即开/关,代码如下:

      

/// <summary>
    /// 设备
    /// </summary>
    public interface IDevices
    {
        void TurnOn();
        void TurnOff();
    }
    /// <summary>
    /// 电灯
    /// </summary>
    public class Light : IDevices
    {
        public void TurnOn()
        {
            Console.WriteLine("灯泡亮了");
        }
        public void TurnOff()
        {
            Console.WriteLine("灯泡黑了");
        }
    }
    /// <summary>
    /// 开关
    /// </summary>
    public class Switch:IDevices
    {
        IDevices devices;
        public Switch (IDevices devices)
        {
            this.devices =devices ;
        }
        public void TurnOn()
        {
            Console.WriteLine("打开开关");
            devices.TurnOn();
        }
        public void TurnOff()
        {
            Console.WriteLine("关上开关");
            devices.TurnOff();
        }
    }
class Program
    {
        //调用
        static void Main(string[] args)
        {
            IDevices _switch = new Switch(new Light());
            _switch.TurnOn();
            _switch.TurnOff();

            Console.Read();
        }
    }

    建议

    1、抽象的稳定性决定了系统的稳定性,因为抽象是保持不变的,依赖于抽象是面向对象程序设计的精髓,也是依赖倒置的核心思想。

   2、依赖于抽象是一个通用的规则,而某些依赖于细节在所难免的,必须权衡抽象和具体的取舍,方法不是一成不变的

   3、依赖于抽象就是要对接口编程,不要对实现编程。

    

    

    

     

相关文章
|
6天前
|
设计模式 Java 程序员
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
本系列文章聚焦于面向对象软件设计中的设计模式,旨在帮助开发人员掌握23种经典设计模式及其应用。内容分为三大部分:第一部分介绍设计模式的概念、UML图和软件设计原则;第二部分详细讲解创建型、结构型和行为型模式,并配以代码示例;第三部分通过自定义Spring的IOC功能综合案例,展示如何将常用设计模式应用于实际项目中。通过学习这些内容,读者可以提升编程能力,提高代码的可维护性和复用性。
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
|
4月前
|
设计模式
设计模式七大原则
这篇文章介绍了设计模式中的七大原则,特别强调了单一职责原则,即一个类应该只有一个引起其行为变化的原因,以确保类功能的高内聚和低耦合。
|
4月前
|
设计模式 存储 前端开发
React开发设计模式及原则概念问题之自定义Hooks的作用是什么,自定义Hooks设计时要遵循什么原则呢
React开发设计模式及原则概念问题之自定义Hooks的作用是什么,自定义Hooks设计时要遵循什么原则呢
|
3月前
|
设计模式 Java 关系型数据库
设计模式——设计模式简介和七大原则
设计模式的目的和核心原则、单一职责原则、接口隔离原则、依赖倒转原则、里氏替换原则、开闭原则、迪米特法则、合成复用原则
|
4月前
|
设计模式 算法 开发者
设计模式问题之最小知识原则(迪米特法则)对代码设计有何影响,如何解决
设计模式问题之最小知识原则(迪米特法则)对代码设计有何影响,如何解决
|
4月前
|
设计模式 前端开发 JavaScript
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些
|
4月前
|
设计模式 前端开发 JavaScript
React开发设计模式及原则概念问题之什么是设计模式,单一职责原则如何理解
React开发设计模式及原则概念问题之什么是设计模式,单一职责原则如何理解
|
6月前
|
设计模式 uml
设计模式学习心得之前置知识 UML图看法与六大原则(下)
设计模式学习心得之前置知识 UML图看法与六大原则(下)
49 2
|
6月前
|
设计模式 Java 数据库
深入理解设计模式六大原则
深入理解设计模式六大原则
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式