为什么在依赖注入模式不是在incluided 四人帮?GOF是否早于广泛的自动化测试?现在依赖注入被视为核心模式吗?
为什么在依赖注入模式不是在incluided 四人帮?GOF是否早于广泛的自动化测试?现在依赖注入被视为核心模式吗?
Answers:
当《四人帮》一书问世时,我是《软件开发》杂志的编辑,我完全可以肯定地说,在1994 年最初发布《设计模式》时,单元测试并不是一种普遍的做法。
1994年,C ++是最常用的面向对象语言,并且大多数对其编程的人都来自C背景。人们根本不具备的“对象思考”功能之一就是在您的程序中有成百上千个入口点的想法。您想到了main()
。如果您从事大型项目,则可能会有一个(通常非常复杂的)makefile来创建基于模块的程序。但是“单元测试”呢?在每个方法的基础上启动一个进程,构建必要的内存上下文,执行它,然后拆掉它?那是非常激进的。
Java使多入口点编程变得更加明显。在最初的Dot-Com繁荣时期,单元测试是一种众所周知的技术,但实际上是JUnit(大约在2001年?)引起了轰动,并成为一种普遍实践。
尽管Strategy和接口编程的一般概念是GoF和90年代中期的时代精神的一部分,但是注入的思想对于该党来说却来得很晚(大约'03 -'05?)。老实说,我的白发对于DI的那部分还是很怀疑的(“下车,你该死的配置文件!”)。
他们称之为战略。
他们的策略似乎具有依赖项注入的所有功能,但名称听起来并不复杂。
我认为依赖注入在分层实现中更为相关。我们考虑依赖注入的另一个领域是单元测试。您的事前建议似乎是正确的。如果该团伙要在2012年收集和隔离模式,那么肯定会有依赖注入。
策略可以在讨论中提出,但是策略没有讨论依赖注入。但是,当在单个项目或dll中使用策略模式时(所有类和接口都保留在一个项目中),看来我们正在进行依赖项注入。实际上我们不是。
现在,如果策略模式中提到的类和接口在不同的项目或层中是分开的,则WE将不得不使用依赖注入技术。我们可以使用统一的配置文件(尽管无法更改运行时)。但是,策略模式没有说明如何注入依赖项。
如果存在与“依赖注入”非常相似的模式,则为“抽象工厂方法”模式。该模式可以在策略模式内部使用以注入依赖性。
答案策略是100%正确的。我投票赞成,但可以发表评论。
“策略使算法独立于使用它的客户端而有所不同。[1]策略是Gamma等人的有影响力的书《设计模式》中包含的模式之一,该书普及了使用模式来描述软件设计的概念。”
设计模式不取决于其用途。依赖注入是通过使用策略模式实现的。如果我们根据用例命名每个模式,则必须重命名许多模式。
存储库模式不是新模式,而是模板模式。
“在这种设计模式的模板方法中,子类可以覆盖一个或多个算法步骤,以允许不同的行为,同时确保仍然遵循总体算法。”
模式通常是组合并命名的多个模式,例如MVC模式。
GOF没有使用的Pure Abstract类的接口,还利用了C ++从多个类继承的功能。