定義html
IOC(Inversion of Control 控制反轉),DIP(Dependency Inverson Principle 依懶倒置)都屬於設計程序時指導原則,並無具體的實現。比較經常使用的五大原則SOLID(SRP單一職責、OCP開閉原則、LSP里氏轉換原則、IOC、DIP)git
DI(Dependency Injection 依懶注入)屬於模式,提供了一種具體的處理程序中對應狀況的實現github
IoC容器 屬於一種框架 例如框架
我只會autofac,屬於菜鳥,歡迎交流spa
IoC原則:反轉控制(通常與DIP一塊兒使用)設計
用代碼演示一下code
public class A { public void Task() { var b=new B(); b.DoSomeThing(); } } public class B { public void DoSomeThing() { } }
上面的代碼,htm
類A建立和管理類B的對象的生命週期。它控制依賴類對象的建立和生命週期。對象
IoC原則建議反轉控制,意味着將控制內容分離到另外一個類。換句話說,將依賴關係建立控件從A類反轉到另外一個類,以下所示。blog
public class A { public void Task() { var b=Factory.GetB(); b.DoSomeThing(); } } public class B { public void DoSomeThing() { } }
A類不直接建立B類,而是經過一個工廠建立。咱們就實現了控制反轉
DIP原則:高級模塊不該該依懶低級模塊,二者都應該依懶抽象;抽象不該該依懶具體,具體應該依懶抽象