这是两个问题:
- 使用计算器
- 实例化一个计算器
第一个很简单-所有计算器都做同样的事情,可以有相同的界面。后者是要解决的一个,因为它需要每个计算器实例不同的参数。
从您列出的内容来看,工厂是最佳的解决方案。它并没有将问题转移到其他地方,而是在解决问题。每个工厂都知道其计算器,并且知道需要什么参数。因此,工厂取决于计算器。使用工厂创建计算器只会创建一个对计算器的依赖,而不是其参数或计算器本身的依赖,它可以成为所有工厂实现的工厂界面的一部分。
可以使用任何选择的方式通过属性注入来解决为工厂提供参数的问题-Spring绝对不错。
该应用程序反过来只知道如何使用计算器,因此取决于通用计算器接口,而不取决于任何特定的计算器实现。



