gpt4 book ai didi

java - 事务可以是一个类吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:21 26 4
gpt4 key购买 nike

昨天面试的时候被问到,“transaction可以是class吗?”

我说,“是的”。他回复了 class 还是 function?

我回答说如果它有一个非常简单的功能它可以是一个函数但它应该是一个类。

他说好吧,我们暂时接受它,它可以是一个类。编写其代码。

我写道:

class transaction{
int timestamp;
Account acc;
int type;

public transaction(int timestamp,int type,Account acc){
this.timestamp = timestamp; this.int = int ; this.acc =acc;
}

public withdraw ( double amount){
acc.amount -= amount;
}

//And other type of transaction function, like add money etc.

}

如果我回答对了或错了,请告诉我,我从他的表情中看不出太多。

最佳答案

Transaction 是一个名词,因此它应该被建模为一个对象。消息(或者就此而言,函数)是动词,因此非常适合执行操作。 交易(名词)可能开始(动词),结束(verb) 或 abort (verb) 并且应该完全reverted (verb) 或committed(动词)。

编辑

@AlexeiLevenkov 在评论部分的评论正确地指出 withdraw 不是正确的 Transaction 消息。 withdraw 操作的正确消息是(Smalltalk 语法)

anAccount withdraw: anAmount in: aTransaction

使 withdraw:in: 成为适当的 Account 操作(方法)。考虑到 Transaction 的一般性质,它应该在

行中实现一个更不可知的方法
aTransaction do: aBlock
aTransaction start
[aBlock value] ifCurtailed: [aTransaction abort].
aTransaction commit

这样我们就有了

anAccount withdraw: anAmount in: aTransaction
aTransaction do: [anAccount withdraw: anAmount]

Transaction 对象的有趣之处在于它能够捕获(和建模)基本协议(protocol) startcommitabort 以及方法 do: 用于通用操作的一般评估(在我的编码中由 Smalltalk block 表示。)

关于java - 事务可以是一个类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28934205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com