做纯净系统的网站,公司网站建设的费用会计处理,企业网站推广方法,站长之家 wordpress在面向对象编程中#xff0c;SOLID 是五个设计原则的首字母缩写#xff0c;旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特C马丁(Robert Cecil Martin)提出的许多原则的子集#xff0c;在他2000年的论文《设计原则与设计模式》中首次提出… 在面向对象编程中SOLID 是五个设计原则的首字母缩写旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原则的子集在他2000年的论文《设计原则与设计模式》中首次提出。SOLID 原则包含S单一功能原则single-responsibility principleO开闭原则open-closed principleL里氏替换原则Liskov substitution principleI接口隔离原则Interface segregation principleD依赖反转原则Dependency inversion principle本文我们来介绍依赖反转原则。依赖反转原则在面向对象编程领域中依赖反转原则Dependency inversion principleDIP是指一种特定的解耦形式使得高层次的模块不依赖于低层次模块的实现细节依赖关系被颠倒反转从而使低层次模块依赖于高层次模块的需求抽象。传统的依赖关系创建在高层次上而具体的策略设置则应用在低层次的模块上图1 中高层 对象A 依赖于低层 对象B 的实现图2 中把高层 对象A 对低层对象的需求抽象为一个 接口A低层 对象B 实现了 接口A这就是依赖反转。依赖反转原则约定高层次的模块不应该依赖于低层次的模块两者都应该依赖于抽象接口。抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。该原则颠倒了一部分人对于面向对象设计的认识方式如高层次和低层次对象都应该依赖于相同的抽象接口。依赖注入是该原则的一种实现方式。C# 示例先定义一个商品信息类public class ProductInfo
{public int ID { get; set; }public string ProductName { get; set; }public string ProductSpec { get; set; }public int Stock { get; set; }
}§糟糕的示范新建一个数据访问类 ProductDataAccess 和业务逻辑类 ProductBusinessLogicpublic class ProductDataAccess
{public ProductInfo GetDetail(int id){ProductInfo product new(){ID id,ProductName 白糖,ProductSpec 500g,Stock 100};return product;}
}public class ProductBusinessLogic
{private readonly ProductDataAccess _productDataAccess;public ProductBusinessLogic(){_productDataAccess new ProductDataAccess();}public ProductInfo GetProductDetails(int id){return _productDataAccess.GetDetail(id);}
}在上面的代码中高层次的类 ProductBusinessLogic 直接依赖于低层次的类 ProductDataAccess这明显违反了 依赖反转原则。§正确的示范根据 依赖反转原则 的要求我们把高层对象 ProductBusinessLogic 对低层对象的需求抽象为一个接口 IProductDataAccesspublic interface IProductDataAccess
{ProductInfo GetDetail(int id);
}在低层对象 ProductDataAccess 中实现接口 IProductDataAccess然后在高层对象 ProductBusinessLogic 中引用注入接口 IProductDataAccesspublic class ProductDataAccess : IProductDataAccess
{public ProductInfo GetDetail(int id){ProductInfo product new(){ID id,ProductName 白糖,ProductSpec 500g,Stock 100};return product;}
}public class ProductBusinessLogic
{private readonly IProductDataAccess _productDataAccess;public ProductBusinessLogic(IProductDataAccess productDataAccess){_productDataAccess productDataAccess;}public ProductInfo GetProductDetails(int id){return _productDataAccess.GetDetail(id);}
}这样这些类的设计便遵守了依赖反转原则。其实ASP.NET Core 中服务的依赖注入正是遵循了依赖反转原则。总结本文我介绍了 SOLID 原则中的依赖反转原则Dependency inversion principle并通过 C# 代码示例简明地诠释了它的含意和实现希望对您有所帮助。作者 技术译民出品 技术译站https://ITTranslator.cn/参考文档https://en.wikipedia.org/wiki/SOLIDhttps://www.c-sharpcorner.com/blogs/dependency-inversion-principle-in-c-sharphttps://flylib.com/books/en/4.444.1.71/1/