Skip to content

Instantly share code, notes, and snippets.

@ms314006
Last active January 29, 2023 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ms314006/c85932264f8dda9e8b60c085e565105c to your computer and use it in GitHub Desktop.
Save ms314006/c85932264f8dda9e8b60c085e565105c to your computer and use it in GitHub Desktop.
class FailTransactionStatusDelegate {
constructor(transaction) {
this.statusString = '失敗';
this.isNonRefundable = true;
}
}
export default FailTransactionStatusDelegate;
class PendingTransactionStatusDelegate {
constructor(transaction) {
this.statusString = '處理中';
this.isNonRefundable = true;
}
}
export default PendingTransactionStatusDelegate;
class SuccessTransactioStatusnDelegate {
constructor(transaction) {
this.statusString = '成功';
this.isNonRefundable = false;
}
}
export default SuccessTransactioStatusnDelegate;
import SuccessTransactioStatusnDelegate from './SuccessTransactioStatusnDelegate';
import FailTransactionStatusDelegate from './FailTransactionStatusDelegate';
import PendingTransactionStatusDelegate from './PendingTransactionStatusDelegate';
class Transaction {
constructor(transaction) {
this.id = transaction.id;
this.transactionStatusDelegate = this.getTransactionStatusDelegate(transaction);
}
//...
getTransactionStatusDelegate(transaction) {
switch (transaction.status) {
case 'SUCCESS':
return new SuccessTransactioStatusnDelegate(transaction);
case 'FAIL':
return new FailTransactionStatusDelegate(transaction);
case 'PENDING':
return new PendingTransactionStatusDelegate(transaction);
default:
throw new Error(`Have no transaction status: ${transaction.status}`);
}
}
}
export default Transaction;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment