c语言-依赖倒转

当一个文件(aa.c文件)依赖于头文件(bb.h)时,如果bb.c编译之后形成的bb.o文件重新编译后,aa.o的文件不需要重新编译

aa.c文件:

bb.h文件:对bb.c文件进行声明

bb.c文件:

有朋友就好奇了,明明bb.h里没有任何实现,为什么aa.c只导入bb.h就可以使用sum方法求和?

原因是:编译程序编译aa.c(其中含有main方法)时,发现它include了bb.h(其中声明了函数int sum(int,int)),那么此时编译器将按照事先设定的路径(include路径列表及代码文件所在的路径)查找与之同名的实现文件(拓展名为.cpp或.c,此案例是bb.c),如果找到该文件,并在其中找到该函数(int sum(int a,int b))的实现代码,则继续编译;如果在指定目录找不到实现文件,或者在该文件及后续的各include文件中未找到实现代码,则返回一个编译错误。学过设计模式3-依赖倒置的都知道,其实可以用一句话来解释这一现象:

高层主键(调用方)不依赖底层主键(被调用方),两者依赖于抽象。

时间: 2024-10-30 05:06:36

c语言-依赖倒转的相关文章

《大话设计模式》:依赖倒转原则

依赖倒转原则 1,高层模块不应该依赖低层模块,两个都应该依赖抽象. 2,抽象不应该依赖细节,细节应该依赖抽象.针对接口编程,不应该针对实现编程. 里氏代换原则 一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且察觉不出父类对象和子类对象的区别.也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化. 子类型必须能够替换掉他们的父类型. 只有当子类可以替换掉父类,软件单位的功能不受影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为. 由于子类型的可替换性才使

Chapter 5.依赖倒转原则

抽象不应该依赖谢姐,细节应该依赖于抽象:针对接口编程,不要对实现编程.例如电脑内的内存坏了不会影响到其它模块,而且什么品牌都可以插入内存插槽,而不仅限于某个品牌的内存条. A.高层模块不应该依赖底层模块,两个都应该依赖抽象. B.抽象不应该依赖细节,细节应该依赖抽象. 里氏代换原则(LSP):子类型必须能够替换掉它们的父类型. 只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为. 依赖倒转其实可以说是面向对象设计的标识,用哪种语言来编

【转载】依赖倒转原则

3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,"依赖"还"倒置",这到底是什么意思?依赖倒置原则的原始定义是:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon

大话设计模式_单一职责_开放封闭_依赖倒转

面向对象的好处:可维护.可扩展.可复用.灵活性好 单一职责原则(SRP): 就一个类而言,应该仅有一个引起它变化的原因.如果有多于一个动机去改变一个类,则此类就有多于一个职责.(游戏开发中,游戏界面和游戏逻辑相分离,而不是聚合在一起) 开放封闭原则(OCP): 软件实体(类.模块.函数等)应该是可以扩展,但不可修改. 最初写代码的时候,假设变化不会发生.但当变化发生时,我们应该建立抽象来隔离以后发生的同类变化.例如,实现加法功能,放在一个单一的类中,如果此时要求实现减法功能,则应该抽象出操作类,

第 5 章 会修电脑不会修收音机 —— 依赖倒转原则

抽象不应该依赖细节,细节应该依赖抽象.针对接口编程,不要针对实现编程. A:高层模块不应该依赖低层模块.两个都应该依赖抽象. B:抽象不应该依赖细节.细节应该依赖抽象. 为什么要叫倒转? 面向过程的开发是,为了使得代码可以复用,一般都会把这些常用代码写成许许多多函数的程序库,这样我们在做新项目是,去调用这些底层的函数就可以了.比如我们做的项目大多是要访问数据库,所以我们就把访问数据库的代码写成了函数,每次做新项目是就去调用这些函数,这就叫高层模块依赖底层模块. 里氏替换原则 子类型必须能够替换掉

学习大话设计模式05_依赖倒转原则

依赖到转原则 A.高层模块不应该依赖低层模块.两个都应该依赖抽象. B.抽象不应该依赖细节.细节应该依赖抽象.即:针对接口编程,不要对实现编程. 里氏代换原则: 一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别.也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化. (子类型必须能够替换掉它们的父类型) 只有当子类可以替换掉父类,软件单位的功能不受影响时,父类才能真正被复用,而子类也能够在父类的基本上增加新的行为. 由于子类型的可替换

小菜学设计模式——依赖倒转原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:依赖倒转原则 书面理解 依赖倒转原则: A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 简单

[Python设计模式] 第3~5章 单一职责原则/开放-封闭原则/依赖倒转原则

单一职责原则 就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏. 软件设计真正要做的许多内容,就是发现职责并把哪些职责相互分离.如果你能够想到多余一个的动机去改变一个类,那么这个类就具有多余一个的职责,就应该考虑类的职责分离. 开放-封闭原则 开放-封闭原则,是说软件实体(类,模块,函数等)应该可以扩展,但是不可修改.即对

三、单一职责原则、开放-封闭原则、依赖倒转原则

一.单一职责原则 1.定义:就一个类而言,应该仅有一个引起它变化的原因. 2.为什么要?:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏. 3.软件设计真正要做的许多内容,就是发现职责并把职责相互分离. 如果你能想到多余一个动机去改变一个类,那么这个类就具有多于一个原则. 4.示例:设计俄罗斯方块的游戏 可以分为游戏逻辑和界面表示逻辑. 游戏逻辑--数组每一项的值改