依赖倒换原则——Dependence Invrsion Principle

1、定义:a,设计系统时用抽象来分析,而不必一开始关注细节

b.针对接口编程,不要针对实现编程。通过接口进行函数、参数、变量声明,避免实现类自己去做各种声明。

2、实现:如果创建的是动态对象,要使用依赖倒换原则。实现类要去调用接口或抽象类。

3.例:公司有一个管理层,两个程序员分类,如何实现管理层指定某类程序员去工作:

根据依赖倒换原则,应该定义一个管理层接口,主要用于实现调用程序员,还应该定义一个程序员接口,然后不同类的程序员直接去实现这个接口,管理层实现直接调用程序员接口即可。

(1)管理层接口

public interface IEmloyee {
    public  String code(Icode code);//管理人员让程序员编码,Icode是程序员接口

}

(2)管理层实现,直接调用程序员接口里面的方法

public class Code implements IEmloyee {//管理层接口的实现
    public static String Run="工作。。。。";
    public String code(Icode code) {
         System.out.println(code+"程序员开始工作");
         return code.getRun(Run);
        // TODO Auto-generated method stub

    }

}

(3)程序员接口

public interface Icode {//程序员接口
        public String getRun(String run);//已经定义了不同类程序员要实现的方法
}

(4)两类程序员对程序员接口的实现

public class CommenProgrammer implements Icode {//普通程序员
    private static final String Run="JAck";

    @Override
    public String getRun(String Run1) {
        // TODO Auto-generated method stub
        System.out.println("普通程序员开始工作");
        return Run;
    }

}
public class SeniorProgrammer implements Icode{//高级程序员
    public static final String Run="lll";
    @Override
    public String getRun(String run) {
        // TODO Auto-generated method stub
        System.out.println("高级程序员开始工作");
        return Run;
    }

(5)测试类,创建管理员让不同类的程序员工作

public class DIP {
    public   static  void main(String args[]){
        IEmloyee employee=new Code();//创建一个管理员
        Icode code=new SeniorProgrammer();//创建一个高级程序员
        Icode code1=new CommenProgrammer();//创建一个普通程序员
        System.out.println(employee.code(code));//让高级程序员干活
        System.out.println(employee.code(code1));//让普通程序员干活
    }

}
时间: 2024-11-09 03:00:37

依赖倒换原则——Dependence Invrsion Principle的相关文章

依赖倒置原则(Dependence Inversion Principle,DIP)

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

依赖倒置(Dependence Inversion Principle)DIP

using System; using System.Collections.Generic; using System.Text; namespace DependenceInversionPrinciple { //依赖倒置(Dependence Inversion Principle)DIP //High level modules should not depend upon low level modeules.Both should depend upon abstractions.

Java Web设计模式之依赖倒换原则

1.依赖倒置原则 A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 2.用UML图来说明一下: 代码说明: (1)管理员接口 1 package com.alibaba.com.miao; 2 3 public interface IEmployee { 4 5 public String code(ICode code); 6 } (2)编码接口 1 package com.alibaba.com.miao; 2 3 public

Java 设计模式(十二) 依赖倒置原则(DIP)

依赖倒置原则(Dependence Inversion Principle) 依赖倒置原则(DIP)的基本概念 原始定义 高层模块不应该依赖低层模块,两者都应该依赖其抽象 抽象不应该依赖细节 细节应该依赖抽象 Java中的具体含义 模块间的依赖通过抽象发生 实现类之间不发生直接的依赖关系 其依赖关系通过接口或者抽象类产生 接口或抽象类不依赖于具体实现 实现类依赖接口或抽象类 依赖倒置(DIP)的好处 采用DIP可以减少类之间的耦合性,提高稳定性,降低并行开发带来的风险,提高代码的可读性和可维护性

依赖倒置原则(Dependency Inversion Principle)

很多软件工程师都多少在处理 "Bad Design"时有一些痛苦的经历.如果发现这些 "Bad Design" 的始作俑者就是我们自己时,那感觉就更糟糕了.那么,到底是什么让我做出一个能称为 "Bad Design" 的设计呢? 绝大多数软件工程师不会在设计之初就打算设计一个 "Bad Design".许多软件也在不断地演化中逐渐地降级到了一个点,而从这个点开始,有人开始说这个设计已经腐烂到一定程度了.为什么会发生这些事情呢?

学习设计模式 - 六大基本原则之依赖倒置原则

设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principl

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

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

设计模式之刘伟老师文章学习记录-------------依赖倒转原则

如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现.依赖倒转原则是Robert C. Martin在1996年为"C++Reporter"所写的专栏Engineering Notebook的第三篇,后来加入到他在2002年出版的经典著作"Agile Software Development, Principles, Patterns, and Practices"一书中.依赖倒转原则定义如下: 依赖倒

面向对象设计原则之依赖倒转原则

如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现.依赖倒转原则是Robert C. Martin在1996年为“C++Reporter”所写的专栏Engineering Notebook的第三篇,后来加入到他在2002年出版的经典著作“Agile Software Development, Principles, Patterns, and Practices”一书中.依赖倒转原则定义如下: 依赖倒转原则(Dependency