[TOC]
# 原則
**將依賴關系倒置為依賴接口**
# 具體概念
1. 上層模塊不應該下層模塊,他們共同依賴一個抽象(父類不能依賴子類,他們都要依賴抽象類)
2. 抽象不能依賴于具體,具體應該依賴抽象
無論使用多么先進的代碼,都無法做到不需要修改代碼即可達到以不變應萬變的地步
# 使用
在經典的J2EE的設計中,通常把DAO層和Services層細分為接口層和實現層,然后在配置文件中進行依賴關系的配置,這是最常見的DIP應用.Spring框架就是一個很好的IOC容器,把從控制權從代碼剝離到IOC容器,通過配置xml實現,根據xml設定,建立對象之間的依賴關系
但是這樣設置存在一個問題,配置文件會變得越來越大,其間關系會變得越來越復雜.同樣逃脫不了隨著應用和業務的變化,不斷修改代碼(這里認為配置文件也是代碼的一部分),實際開發中很少單純的改配置文件,一般改了配置文件,代碼也要改
**依賴倒置的核心原則就是要解耦.如果脫離的這個最原始的原則,那就是本末倒置**
# 如何滿足DIP
每個較高層次類都為他所需要的服務提供一個接口聲明,較低層次類實現這個接口
每個高層類都通過該抽象接口使用服務
- 書列表
- laravel框架關鍵技術
- 第一章 組件化開發與composer使用
- 簡介
- composer
- 添加路由組件
- 添加控制器模塊
- 添加模型組件
- 添加視圖組件
- 第三章 laravel框架中常用的php語法
- 匿名函數
- 文件包含
- 魔術方法
- 魔術常量
- 反射
- 后期靜態綁定
- traits
- 第四章 laravel框架中使用的HTTP協議基礎
- HTTP協議
- 數據庫
- 數據遷移
- 第六章 laravel框架中的設計模式
- IOC模式
- php核心技術與最佳實踐
- 第一章面向對象核心
- 反射
- 簡單ORM
- 異常和錯誤
- 接口
- 第二章,面向對象設計
- 設計原則
- 單一職責
- 接口隔離
- 開放封閉
- 替換原則
- 依賴倒置
- linux是怎么寫的呢?
- 第三章 正則表達
- 認識正則
- 第四章 php網絡技術應用
- HTTP協議詳解
- php和http相關函數
- 垃圾信息防御措施
- 現代操作系統
- 引論
- sql必知必會
- 限制結果
- 按位置排序
- where求職順序
- IN操作符
- like
- 函數
- group by
- 組合查詢
- 插入檢索出的數據
- 視圖
- 高性能mysql
- 第一章節 mysql架構與歷史
- mysql架構邏輯圖
- 連接與管理
- 優化與運行
- 讀寫鎖
- 鎖粒度
- 表鎖(table lock)
- 行級鎖(row lock)
- ACID
- 隔離級別
- 死鎖
- 隱式和顯式鎖定
- 多版本并發控制
- Innodb概覽
- 第四章節 Schema與數據類型優化
- 選擇優化的數據類型
- 日期和時間類型
- 標識列
- 特殊類型數據
- 表設計中的缺陷
- 范式
- 計數器表
- 第五章 創建高性能索引
- 索引基礎
- 索引類型
- 索引的優點
- 高性能索引策略
- 選擇合適的索引列順序
- 聚簇索引
- 順序的主鍵什么時候會造成更壞的后果
- 覆蓋索引
- 使用索引掃描來做排序
- 壓縮索引
- 冗余和重復索引
- 索引和鎖
- 支持多種過濾條件
- 什么是范圍條件
- 優化排序
- 維護索引和表
- 表損壞
- 減少索引和數據的碎片
- 第六章 查詢性能優化
- 掃描的行數和訪問類型
- 重構查詢方式
- 查詢執行的基礎
- 重構-改善既有代碼設計
- 第一章-重構
- 什么是重構
- 第一個案列
- 重構第一步
- 王垠博客
- 多態取代價格相關邏輯