Public 静态只读与传递引用

Public static readonly vs passing a reference

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

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

创建的 CardReader 和 CoinMachine 对象

在 VendingMachine 中创建一个 public 静态只读对象引用会更好吗?或者将对象引用传递给 SaleController,然后传递给 Payment?

谢谢!

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

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