1.7 依赖倒置原则
发表于|更新于|设计模式
|总字数:275|阅读时长:1分钟|浏览量:
依赖倒转原则
概念
依赖倒转原则:高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
什么是高层,什么是低层呢?它们指的是继承(派生)中的基类子类关系,基类或者越抽象的类,层次越高。简单说,依赖倒转原则要求针对接口编程,不要针对实现编程。
依赖倒转原则要求再程序代码中传递参数时,或在关联关系中,尽量引用层次高的出现层类,即使用接口或抽象类来声明变量类型、参数类型声明、方法返回类型声明,以及数据类型转换等,而不要使用具体类来做这些事情。(其实这一点也符合里氏代换原则的指导意义,即对一个方法而言,返回基类的地方一定可以返回子类)。同样,依赖倒转原则设计的关键也在与抽象化设计。
文章作者: Estom
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!
相关推荐

2019-09-29
03latex字体设置
latex字体设置字体属性字体编码 正文字体编码 数学字体编码 字体族 罗马字体 无衬线字体 打字机字体 字体族命令,作用于参数。\textrm{罗马字体} \textsf{无衬线字体} \texttt{打字机字体} 字体族声明,作用于后续文本\rmfamliy \sffamily \ttfamilyhello world 可以使用大括号进行分组,限定字体声明的范围。 字体系列 粗细\textmd{Medium series} \mdseries 宽度\textbf{boldface series} \bfseries 字体形状 直立\textup{} \upshape 斜体\textit{} \itshape 伪斜体\textsl{} \slshape 小型大写\textsc{} \sctext 字体类型 中文字体设置在ctex宏包当中。 宋体\songti{} 黑体\heiti{} 仿宋\fangsong{} 楷书\kaishu{} 字体大小 基于文档类型的normalsize大小设置\document[12pt]{article},对于英文字体的normal...

2021-12-24
type
type显示指定命令的类型。 概要1type [-afptP] name [name ...] 主要用途 显示要查找的命令的信息。 控制查找范围和行为。 显示要查找的命令优先级最高的类型。 选项12345-a:在环境变量PATH中查找并显示所有包含name的可执行文件路径;当'-p'选项没有同时给出时,如果在别名、关键字,函数,内建的信息中存在name,则一并显示。-f:排除对shell函数的查找。-p:如果name在执行'type -t name'返回的不是'file',那么什么也不返回;否则会在环境变量PATH中查找并返回可执行文件路径。-P:即使要查找的name是别名、内建、函数中的一个,仍然会在环境变量PATH中查找并返回可执行文件路径。-t:根据name的类型返回一个单词(别名,关键字,函数,内建,文件),否则返回空值。 参数name:要查找的命令,可以为多个。 返回值当指定的命令可以找到时返回成功,如果有没找到的返回失败。 例子123456接下来要用到的例子假设'~/.bashrc'...

2021-09-07
A.7-chinese
A.7 自动推导变量类型C++是静态语言:所有变量的类型,都会在编译时被准确指定。所以,作为程序员你需要为每个变量指定对应的类型。 有些时候就需要使用一些繁琐类型定义,比如: 123std::map<std::string,std::unique_ptr<some_data>> m;std::map<std::string,std::unique_ptr<some_data>>::iterator iter=m.find("my key"); 常规的解决办法是使用typedef来缩短类型名的长度。这种方式在C++11中仍然可行,不过这里要介绍一种新的解决办法:如果一个变量需要通过一个已初始化的变量类型来为其做声明,那么就可以直接使用auto关键字。这样,编译器就会通过已初始化的变量,去自动推断变量的类型。 1auto iter=m.find("my key"); 当然,auto还有很多种用法:可以使用它来声明const、指针或引用变量。这里使用auto对相关类型进行了声明: 12...

2025-12-21
自引用泛型概述
自引用泛型(Self-referential generics / F-bounded polymorphism,很多人也叫 CRTP 风格)指:类型参数的上界本身又引用了这个类型参数,典型形态是: 1class Base<T extends Base<T>> { ... } 含义:T 必须是“某个继承自 Base<T> 的类型”,从而让 Base 在编译期“知道”子类的精确类型。 1 要解决什么问题:父类方法想返回“子类类型”没用自引用泛型时的问题12345678class Base { Base withName(String n) { return this; }}class UserBuilder extends Base { }UserBuilder b = new UserBuilder();b.withName("a") // 返回 Base .withName("b"); // 链式调...

2020-09-25
2数据类型
ndarray对象 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。 ndarray 对象是用于存放同类型元素的多维数组。 ndarray 中的每个元素在内存中都有相同存储大小的区域。 ndarray定义1numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) 名称 描述 object 数组或嵌套的数列 dtype 数组元素的数据类型,可选 copy 对象是否需要复制,可选 order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) subok 默认返回一个与基类类型一致的数组 ndmin 指定生成数组的最小维度 ndarray数据类型 名称 描述 bool_ 布尔型数据类型(True 或者 False) int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) intc 与 C 的 int 类型一样,一般...

2023-08-13
06 协变返回类型
Java 协变返回类型是指在子类中重写一个方法时,该方法的返回类型可以是父类中该方法返回类型的子类。这意味着子类可以返回更具体的类型,而无需强制转换为父类类型。 例如,假设有一个父类 Animal 和一个子类 Dog,它们都有一个返回类型为 Animal 的方法 getAnimal。在 Dog 类中重写该方法时,可以将返回类型更改为 Dog,因为 Dog 是 Animal 的子类。这样一来,当调用 Dog 的 getAnimal 方法时,会返回一个 Dog 对象而不是 Animal 对象。 导出类(子类)覆盖(即重写)基类(父类)方法时,返回的类型可以是基类方法返回类型的子类。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package com.evada.de;/** * @Author 云析学院 * Created by Ay on 2016/12/4. */public class Ay {...
公告
欢迎参观Estom的小屋



