Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 构建设计良好的依赖关系的注意事项 我开始考虑在未来的项目或重构中实现控制容器的反转,我想知道当正确设计依赖关系时,哪些原则(除了GoF模式之外)可能会令人感兴趣。假设我需要设计一个简单的控制台应用程序,如果可以访问互联网,它将在Amazon上搜索一本书(通过ISBN),或者在没有可用连接时返回到本地数据库(SQLite、SqlServerCE)。因此,最初的设计可能是: IAmazonSearchProvider ILocalSearchProvider IResultsGenerator(取决于IAmazonSearchProvider或ILocalSearchProvider) 输出格式化程序 控制台应用程序(取决于IOutputFormatter)_Design Patterns_Inversion Of Control_Dependency Management - Fatal编程技术网

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,我想感谢你的贡献,我发现它提供了很多信息。我期待着收到你即将出版的书。