【问题标题】:Public static readonly vs passing a reference公共静态只读与传递引用
【发布时间】:2021-11-18 23:12:26
【问题描述】:

对于一个学校项目,我必须使用 UML 设计一个系统,只是我遇到了问题。

假设我必须设计一个(有些过于复杂的)自动售货机。它有一个使用 Creator 模式制作控制器的类:VendingMachine。此类为每次销售创建一个 SaleController 对象。机器支持不同类型的支付,所以 SaleController 创建了一个 Payment 对象。此类的工作是根据用户输入请求使用 CoinMachine 或 CardReader 类进行支付。但是,它显然需要对 CardReader 和 CoinMachine 对象的引用,它们是由 VendingMachine 类创建的。

在 VendingMachine 中创建公共静态只读对象引用会更好吗?还是将对象引用传递给 SaleController,然后将其传递给 Payment?

谢谢!

【问题讨论】:

  • 是UML任务还是编码任务?您在这里问的是编码问题,而不是 UML 问题。

标签: design-patterns modeling


【解决方案1】:

在我看来,您需要一个能够封装此类逻辑的PaymentService。这个PaymentService 将决定是使用CardReader 还是CoinMachine 来处理Payment 对象。

CardReader 和 CoinMachine 应该是 PaymentService 的依赖项。如果您使用 Spring,您可以通过使用 @Component 注释它们来创建 CardReader 和 CoinMachine Bean,并且在 PaymentService 中您只需要使它们成为依赖项(通过 @Autowired 或构造函数注入)。如果您没有使用 Spring 或任何其他类似的控制反转框架,您最好的选择是在 PaymentService 上创建 CardReader 和 CoinMachine 实例并将它们作为属性保留。

【讨论】:

  • 非常感谢!!我不知道 Spring 或类似的东西是什么,但最后的解决方案可能是最好的解决方案。它完全消除了传递对象或拥有公共静态只读方法的需要。
  • 对不起,我只是举一个我最熟悉的技术的例子,希望你也知道。但是,正如您所说,即使不使用 Spring 等框架,该解决方案仍然有效。如果答案对您有所帮助,请考虑对其进行投票甚至接受它是正确的,以便其他人可以从中受益并轻松找到类似问题的解决方案;)
猜你喜欢
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多