<commit_before>---
layout: post
title: 【设计原则】面向对象设计原则之三：依赖倒置原则
category: 架构
tags: 设计原则
keywords: 依赖倒置原则, 面向对象设计
description: 介绍面向对象设计原则之三：依赖倒置原则。依赖倒置原则的核心是面向接口编程。
---
注：本文来自Nemo, http://nemotec.github.io  
&nbsp;  
&nbsp;  


**依赖倒置原则(DIP)**  
&nbsp;  

#### 【全称】   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Dependence Inversion Principle" 依赖倒置原则  
&nbsp;  

##### 【说明】  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;``High level modules should depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.``  

1.高层模块不应该依赖低层模块，两者都应该依赖于抽象(抽象类或接口)；  

2.抽象(抽象类或接口)不应该依赖于细节(具体实现类)；  <commit_msg>modify principle article 4.<commit_after>---
layout: post
title: 【设计原则】面向对象设计原则之三：依赖倒置原则
category: 架构
tags: 设计原则
keywords: 依赖倒置原则, 面向对象设计
description: 介绍面向对象设计原则之三：依赖倒置原则。依赖倒置原则的核心是面向接口编程。
---
注：本文来自Nemo, http://nemotec.github.io  
&nbsp;  
&nbsp;  


**依赖倒置原则(DIP)**  
&nbsp;  

#### **【全称】**   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Dependence Inversion Principle" 依赖倒置原则  
&nbsp;  

#### 【**说明**】  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;``High level modules should depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.``  

1.高层模块不应该依赖低层模块，两者都应该依赖于抽象(抽象类或接口)；  

2.抽象(抽象类或接口)不应该依赖于细节(具体实现类)；  
{'fraction_non_alphanumeric': 0.15971731448763252, 'fraction_numerical': 0.0035335689045936395, 'mean_word_length': 5.710900473933649, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3315770', 'n_tokens_mistral': 706, 'n_tokens_neox': 835, 'n_words': 111}