依赖倒置原则(Dependency Inversion Principle)为我们提供了降低模块间耦合度的一种思路,依赖注入(Dependency Injection)是一种具体的实施方法。
依赖倒置原则:
前面一篇讲软件设计原则的文章中已经提到了“依赖倒置原则”(Dependency Inversion Principle),该原则主要是为了降低模块与模块之间的“耦合度”,提倡模块与模块之间不要发生直接的依赖关系,即:高层模块不应该直接依赖于低层模块,高层模块和低层模块应该同时依赖一个抽象层。如果现在有一个类Manager在处理某一任务时,需要记录错误日志,那么我们可以这样编写代码:
1 class Manager 2 { 3 //… 4 FileLogger _logger; 5 public void DoSomething() 6 { 7 try 8 { 9 //…do something 10 } 11 catch(Exception ex) 12 { 13 if(_logger == null) 14 { 15 _logger = new FileLogger(); 16 } 17 _logger.Log(ex.ToString()) 18 } 19 } 20 } 21 class FileLogger 22 { 23 public void Log(string errorLog) 24 { 25 //…write into log file 26 } 27 }