【问题标题】:Creating a method that closes an account创建关闭帐户的方法
【发布时间】:2020-07-22 15:15:08
【问题描述】:

这是 UML 图中的实例变量: public boolean closeAccount() where 如果账户成功关闭则返回true,否则返回false。

帐户由帐号标识,如果余额为负数,则无法关闭帐户。

到目前为止,我有:

public boolean closeAccount() {
if (number != null && balance >=0 ) {
            //Unsure what to put here
            return true;
        }
        return false;

    }

即使已关闭,该帐户仍应存在以用于搜索和显示目的。知道要添加什么代码才能“关闭”帐户吗?

【问题讨论】:

  • 这真的取决于整个例子。最简单的方法是将其标记为已关闭(使用布尔标志)。
  • 同意@Henry - Account 是否有布尔属性isOpen?还是由你来设计那部分?

标签: java oop object


【解决方案1】:

实际上应该放在那里的代码取决于您的业务逻辑和项目结构。 例如, 将方法 void close(){或任何名称 one :3} 添加到您的 Account 类。此方法应通过在帐户名称后附加“CLOSED”并将余额设置为 0 来关闭当前帐户。(帐号应保持不变。)此外,减少帐户总数。

【讨论】:

    【解决方案2】:

    也许您需要在 Account 实体类中处理状态:

    public class Account {
    
        private String number; //following this format: 00223993002
        private long balance;
        .
        .
        .
        private Status status = Status.OPEN; //by default, account is open
      
    }
    

    并且拥有(例如):

    enum Status {OPEN, CLOSING, CLOSED}
    

    现在,避免将业务逻辑放在实体类中,它应该放在 service 类中:

    public class AccountService {
    
       public boolean closeAccount(String accountNumber) {
    
          Account target = this.getAccountByNumber(accountNumber);
          if (target != null && target.getBalance() >= 0 ) {
             target.setStatus(Status.CLOSING);
             return this.saveOrUpdateAccount(target);
          }
          return false;
       }
    
       public Account getAccountByNumber(String accountNumber) {...}
    
       public boolean saveOrUpdateAccount(Account account) {...}
        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2022-01-23
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多