zoukankan      html  css  js  c++  java
  • 依赖倒置原则(设计模式_05)

    依赖倒转原则就是高层模块不能依赖底层模块,他们两个应该依赖抽象,而抽象就是接口或者抽象类,是管理他们两个的父类,由于这种关系,所以抽象不能依赖细节,而细节要依赖抽象。

    我们直接用案例来分析就明白了:

    // 定义一个语言接口
    public interface ILanguage {
    
        // 定义一个输出语言的方法
        public String getLanguage();
    
    }
    
    // Java语言类
    public class Java implements ILanguage {
    
        public String getLanguage() {
            return "正在学习Java语言开发...";
        }
    
    }
    
    // C语言类
    public class C implements ILanguage {
    
        public String getLanguage() {
            return "正在学习C语言开发...";
        }
    
    }
    
    // 定义一个学生,学习编程语言
    public class Student {
    
        private ILanguage iLanguage = null;
    
        public Student(ILanguage iLanguage) {
            this.iLanguage = iLanguage;
        }
    
        public void studyMethod() {
            System.out.println("小明同学在学习:");
            if (null != iLanguage) {
                System.out.println(iLanguage.getLanguage());
            }
        }
    
    }
    
    // 客户端操作
    public class Main {
    
        public static void main(String[] args) {
            Student student = null;
    
            student = new Student(new C());
            student.studyMethod();
    
            student = new Student(new Java());
            student.studyMethod();
        }
    
    }

    常规的写法是,Student直接和编程语言交互,这样的话就耦合性比较高,从而也是高层模块依赖底层模块,这个时候需要用一个抽象,让细节依赖抽象,而这个 ILanguage 接口 就是抽象,从而让高层模块与底层模块没有依赖。

    总之一句话解释就是:你理解了面向接口编程,你就理解了依赖倒置原则。

    谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
    刘德利CSDN博客, http://blog.csdn.net/u011967006

  • 相关阅读:
    网络基础 港湾FlexHammer5010交换机镜像端口配置
    HttpWatch HttpWatch时间表(HttpWatch Time Charts)
    网络基础 计算机网络速率,带宽,吞吐量概念
    Kubernetes 1.11.2概述和搭建(多节点)
    Ubuntu 搭建docker registry 私有仓库
    Ubuntu 搭建etcd
    python 多线程删除MySQL表
    python 统计MySQL表信息
    基于Prometheus的Pushgateway实战
    基于docker 搭建Elasticsearch6.2.4(centos)
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322230.html
Copyright © 2011-2022 走看看