Design patterns 构建设计良好的依赖关系的注意事项 我开始考虑在未来的项目或重构中实现控制容器的反转,我想知道当正确设计依赖关系时,哪些原则(除了GoF模式之外)可能会令人感兴趣。假设我需要设计一个简单的控制台应用程序,如果可以访问互联网,它将在Amazon上搜索一本书(通过ISBN),或者在没有可用连接时返回到本地数据库(SQLite、SqlServerCE)。因此,最初的设计可能是: IAmazonSearchProvider ILocalSearchProvider IResultsGenerator(取决于IAmazonSearchProvider或ILocalSearchProvider) 输出格式化程序 控制台应用程序(取决于IOutputFormatter)
非常感谢您的指导。我想Design patterns 构建设计良好的依赖关系的注意事项 我开始考虑在未来的项目或重构中实现控制容器的反转,我想知道当正确设计依赖关系时,哪些原则(除了GoF模式之外)可能会令人感兴趣。假设我需要设计一个简单的控制台应用程序,如果可以访问互联网,它将在Amazon上搜索一本书(通过ISBN),或者在没有可用连接时返回到本地数据库(SQLite、SqlServerCE)。因此,最初的设计可能是: IAmazonSearchProvider ILocalSearchProvider IResultsGenerator(取决于IAmazonSearchProvider或ILocalSearchProvider) 输出格式化程序 控制台应用程序(取决于IOutputFormatter),design-patterns,inversion-of-control,dependency-management,Design Patterns,Inversion Of Control,Dependency Management,非常感谢您的指导。我想I*是接口IResultsGenerator和ILocalSearchProvider听起来像是IResultsGenerator的实现(而不是接口)。还有一些东西应该取决于IResultsGenerator,我建议使用ConsoleApplication 其余的看起来不错。这是一种非常正常的方法,也不错,但它主要关注力学,可能会带来违反规则的风险。在较高的层次上,如果您可以让API描述它的功能,而不是描述它是如何工作的,那么您的情况会更好。遵循这一原则是一个重要的开端 在
I*
是接口IResultsGenerator
和ILocalSearchProvider
听起来像是IResultsGenerator
的实现(而不是接口)。还有一些东西应该取决于IResultsGenerator
,我建议使用ConsoleApplication
其余的看起来不错。这是一种非常正常的方法,也不错,但它主要关注力学,可能会带来违反规则的风险。在较高的层次上,如果您可以让API描述它的功能,而不是描述它是如何工作的,那么您的情况会更好。遵循这一原则是一个重要的开端 在设计抽象时,更喜欢组合而不是继承。除此之外,请大家帮忙 目前,我的工作环境如下(其中):
只要依赖项是线性的,而不是循环的,你就可以了。你可能是对的-我刚刚在Spring.NET的CodeConfig参考上启发了我的示例:Mark,我想感谢你的贡献,我发现它提供了很多信息。我期待着收到你即将出版的书。