设计模式课程 设计模式精讲 3-4 依赖倒置原则讲解+coding

1    课程讲解

2    代码演练

2.1  非面向接口编程

2.2  面向接口编程1  传参

2.3  面向接口编程2  构造函数

2.4  面向接口编程3  set方法

1    课程讲解

2    代码演练

2.1  非面向接口编程

缺点:  

测试类:

package com.geely.design.principle.dependencyinversion;

public class Test {
    //v1.1  普通方法调取java类
    public static void main(String[] args) {
        Geely geely = new Geely();
        geely.studyJavaClass();
        geely.studyPreClass();
    }
}

实体类:

package com.geely.design.principle.dependencyinversion;

public class Geely {
    public void studyJavaClass(){
        System.out.println("Geely Study Java Lesson");
    }

    public void studyPreClass(){
        System.out.println("Geely Study Pre Lesson");
    }

}

打印结果:

Geely Study Java Lesson
Geely Study Pre Lesson

Process finished with exit code 0

2.2  面向接口编程1  传参

缺点:

测试类:

package com.geely.design.principle.dependencyinversion;

public class Test {
    //v1.1  普通方法调取java类
    /*public static void main(String[] args) {
        Geely geely = new Geely();
        geely.studyJavaClass();
        geely.studyPreClass();
    }*/

    //v1.2  面向接口编程 传参
    public static void main(String[] args) {
        Geely geely = new Geely();
        geely.studyImoocClass(new JavaCourse());
        geely.studyImoocClass(new PreCourse());
    }
}

实体类:

package com.geely.design.principle.dependencyinversion;

public class Geely {
    public void studyJavaClass(){
        System.out.println("Geely Study Java Lesson");
    }

    public void studyPreClass(){
        System.out.println("Geely Study Pre Lesson");
    }

    public void studyImoocClass(Icourse icourse){
        icourse.studyClass();
    }

}

课程类1:

package com.geely.design.principle.dependencyinversion;

public class JavaCourse implements  Icourse{
    @Override
    public void studyClass() {
        System.out.println("Geely Study Java Lesson");
    }
}

课程类2:

package com.geely.design.principle.dependencyinversion;

public class PreCourse implements Icourse{
    @Override
    public void studyClass() {
        System.out.println("Geely Study Pre Lesson2");
    }
}

课程接口:

package com.geely.design.principle.dependencyinversion;

public interface Icourse {
    void studyClass();
}

打印日志:

Geely Study Java Lesson
Geely Study Pre Lesson2

Process finished with exit code 0

2.3  面向接口编程2  构造函数

2.4  面向接口编程3  set方法

原文地址:https://www.cnblogs.com/1446358788-qq/p/10962800.html

时间: 2024-10-19 22:24:51

设计模式课程 设计模式精讲 3-4 依赖倒置原则讲解+coding的相关文章

设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding

1 课程讲解 1.1 定义 1.2 特质 1.3 重点 2 代码演练 2.1 反例 2.2 正例 1 课程讲解 1.1 定义 定义:一个对象应该对其他对象保持最少的了解.又叫最少知道原则. 1.2 特质 核心:降低类的耦合 优点:降低类的耦合 1.3 重点 只和朋友交流,不和陌生人说话 朋友:出现在成员变量.方法的输入.输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类. 2 代码演练 2.1 反例 测试类: package com.geely.design.principle.d

设计模式六大原则(3):依赖倒置原则(转载)

设计模式六大原则(3):依赖倒置原则 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类A一般是高层模块,负责复杂的业务逻辑:类B和类C是低层模块,负责基本的原子操作:假如修改类A,会给程序带来不必要的风险. 解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率. 依赖倒置原则

C#软件设计——小话设计模式原则之:依赖倒置原则DIP

前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”,即各方便都有战斗力.关于设计模式,作为程序猿的我们肯定都不陌生.博主的理解,所谓设计模式就是前人总结下来的一些对于某些特定使用场景非常适用的优秀的设计思路,“前人栽树,后人乘凉”,作为后来者的我们就有福了,当我们遇到类似的应用场景的时候就可以直接使用了.关于设计模式的原则,博主将会在接下来的几篇里面

增删改查也有设计模式——依赖倒置原则另解

一个增删改查的例子解读面向接口编程和依赖倒置原则 依赖倒置原则介绍 依赖倒置原则包括两个部分 .高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. 抽象不应该依赖于具体实现,具体实现应该依赖于抽象. 例子 现在有如下场景和需求:老板要求设计任务模块,包括发布任务和撤回任务等.假设这个需求只给了几个小时去做,那肯定是来不及设计了,写到哪算哪.定义撤回接口的控制层如下 @RequestMapping('cancel') @ResponseBody public String cancelT

设计模式六大原则: 老板是如何减轻负担的 -- 依赖倒置原则

很多创业公司都对外宣称"扁平化管理",什么是"扁平化管理"呢?请看下面这张架构图: 因为人少,老板直接管理着采购.销售.人力跟 IT 等人员,虽然累了点,但部门少.人不多也还好. 但是随着公司规模发展,每次新加入人员老板都要去认识.沟通,出现问题还得去约出去喝个茶,老板发现自己的时间都浪费在这些琐事,容易耽搁事不说,还发挥不出更大价值. 这时他决定招一些经理替自己分别管理各个部门,自己只要管理这些经理就好了. 于是新的架构图是这样的: 老板这下子省心多了,有问题直接

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

定义: 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口:抽象接口不应该依赖于具体实现.而具体实现则应该依赖于抽象接口.依赖倒置原则英文全称为Dependence Inversion Principle,简称为DIP. 问题由来: 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类A一般是高层模块,负责复杂的业务逻辑:类B和类C是低层模块,负责基本的原子操作:假如修改类A,会给程序带来不必要的风险. 解决方案: 将类A修改为依赖接口I,类B和

ASP.NET 设计模式中依赖倒置原则

依赖倒置原则 A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 依赖倒置原则 A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 目录 1概述 2意图 3代码实现 4结构图 1概述编辑 所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体.简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现

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

定义 依赖倒置原则(Dependency Inversion Principle) 核心思想:依赖于抽象     具体体现: 体现一:高层模块不应该依赖低层模块.两个都应该依赖抽象. 体现二:抽象不应该依赖细节.细节应该依赖抽象. 依赖倒置原则告诉我们:细节是多变的,而抽象是相对稳定的.所以我们编程的时候要注重抽象的编程,而非细节编程. 实例 1.AGP插槽:主板和显卡之间的关系的抽象.主板和显卡通常是使用AGP插槽来连接的,这样,只要接口适配,不管是主板还是显卡更换,都不是问题. 2.驾照:司

设计模式六大原则之依赖倒置原则

一.概念: 依赖倒置原则英文缩写DIP(Dependence Inversion Principle)原始定义:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions. 翻译过来就三层含义