1
4
根据你的需要,你可以走两条路线。 1。将UI直接连接到具体类 这是最简单的选择,但很多时候是完全可以接受的。虽然您可能有一个具有大量接口和DI使用的域模型,但是UI构成了对象图的组成根,您可以在这里简单地连接具体的类,包括您需要的端口号参数。 其好处是这种方法简单易懂,易于理解和实现。 缺点是你的灵活性变差了。您将无法用另一个实现任意地替换一个实现(但同样,您可能不需要这种灵活性)。 即使UI被锁定在具体的实现中,这并不意味着域模型本身在 其他应用 . 2。添加抽象工厂 另一种选择是添加另一层间接寻址。它可以使用抽象工厂来创建实例,而不是让您的UI直接创建类。 工厂的创建方法可以将端口号作为输入,因此这个抽象在UI子层中是最好的。
然后,您可以让DI容器连接使用端口号的工厂实现,并将其作为构造函数参数传递给实际实现。其他工厂实现可能只是忽略参数。 这种方法的优点是,您不会污染API(或具体的实现),而且您仍然具有编程到接口的灵活性。 缺点是它又增加了一层间接性。 |
2
0
大多数国际奥委会集装箱都有某种形式的 Constructor Injection 这将允许您的IOC容器将模拟的COM端口传递到您的类中进行单元测试。这似乎是最干净的解决方案。 我将避免添加“start”方法等。更好的做法是(如果可能的话)始终使类处于有效状态,并使用start方法切换到无参数构造函数会使这些调用之间的类无效。这样做是为了让测试变得更加困难(这会使测试变得更好)。 |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |