【发布时间】:2021-01-23 09:25:27
【问题描述】:
假设有两个类,一个是用户类,其中包含用户信息;另一个是支付交易类。 场景很简单,如果用户年龄>65岁,创建A类支付交易;否则,创建 B 类支付交易。
有几种方法可以做到这一点:
- 创建一个既不属于用户也不属于事务的方法,只需调用 CreateTransaction。此方法中说明了逻辑:
func CreateTransaction(user, transaction) {
if user.GetAge() > 65:
transaction.CreateA()
else:
transaction.CreateB()
}
- 另一个选项是为用户类创建一个方法:
class User {
...
func CreateTransaction(transaction) {
if user.GetAge() > 65:
transaction.CreateA()
else:
transaction.CreateB()
}
}
然后有一个 CreateTransactionController 方法,调用函数如下:
func CreateTransactinController(user, transaction) {
user.CreateTransaction()
}
我的问题是,选项 1 是否被视为过程编程,因为逻辑实际上不属于任何对象? (或贫血模式?) 1 和 2 的区别只是放逻辑的地方不同吗?
谢谢!
【问题讨论】:
标签: oop domain-driven-design procedural-programming anemic-domain-model