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?
谢谢!
在我看来,您需要一个能够封装此类逻辑的PaymentService
。 PaymentService
将决定是使用 CardReader
还是 CoinMachine
来处理 Payment
对象。
CardReader
和 CoinMachine
应该是 PaymentService
的依赖项。如果你正在使用 Spring,你可以创建 CardReader
和 CoinMachine
Beans,方法是用 @Component
注释它们,在 PaymentService
中,你只需要使它们依赖(注入通过 @Autowired
或构造函数)。如果您不使用 Spring 或任何其他类似的控制反转框架,您最好的选择是在 PaymentService
上创建 CardReader
和 CoinMachine
实例并将它们保留为属性。
对于一个学校项目,我必须使用 UML 设计一个系统,只有我 运行 遇到了问题。
假设我必须设计一台(有点过于复杂的)自动售货机。它有一个 class 和制作控制器的 Creator 模式:VendingMachine。 class 为每次销售创建一个 SaleController 对象。机器支持不同类型的支付,因此 SaleController 创建一个 Payment 对象。此 class 的工作是根据用户输入请求使用 CoinMachine 或 CardReader classes 进行支付。但是,它显然需要引用由 VendingMachine class.
创建的 CardReader 和 CoinMachine 对象在 VendingMachine 中创建一个 public 静态只读对象引用会更好吗?或者将对象引用传递给 SaleController,然后传递给 Payment?
谢谢!
在我看来,您需要一个能够封装此类逻辑的PaymentService
。 PaymentService
将决定是使用 CardReader
还是 CoinMachine
来处理 Payment
对象。
CardReader
和 CoinMachine
应该是 PaymentService
的依赖项。如果你正在使用 Spring,你可以创建 CardReader
和 CoinMachine
Beans,方法是用 @Component
注释它们,在 PaymentService
中,你只需要使它们依赖(注入通过 @Autowired
或构造函数)。如果您不使用 Spring 或任何其他类似的控制反转框架,您最好的选择是在 PaymentService
上创建 CardReader
和 CoinMachine
实例并将它们保留为属性。