假设我有一系列客户端。
例如,每个客户端都在其中存储三个对象
客户[1]有一个CurrentAccount
,CreditCard
,DebitCard
类。
我如何创建这样的数据库?
假设CurrentAccount
有一个公共方法“getAmount
”
如果我打电话,它会工作吗?
int num = Client[1].CurrentAccount.getAmount();
我很确定不会。但是,你如何创建这个数据库呢?
答案 0 :(得分:0)
您必须创建一个客户端类,其中包含获取当前帐户,信用卡和借记卡的方法。然后,如果您有一组称为客户端的客户端,您可以执行以下操作:
int num = clients[1].getCurrentAccount().getAmount();
与此相同:
Client client = clients[1];
CurrentAccount account = client.getCurrentAccount();
int num = account.getAmount();
更短。
答案 1 :(得分:0)
public class Client{
public CurrentAccount ca = new CurrentAccount();
public CreditCard cc = new CreditCard();
public DebitCard dc = new DebitCard ();
}
public class CurrentAccount {
private int amount = 0;
public int getAmount(){ return amount; }
}
某处......
client<Client>[] = new Client<Client>[3]();
client[1] = new Client();client[2] = new Client();client[3] = new Client();
int amount = client[1].ca.getAmount();
修改1 更好的做法是在客户端类中定义一个方法。
public class Client{
private CurrentAccount ca = new CurrentAccount(); // note that its private now.
public CreditCard cc = new CreditCard();
public DebitCard dc = new DebitCard ();
// define a property acccess getter method
public int getCurrentAccountAmount(){return ca.getAmount();}
}
并将其命名为:
int amount = client[1].getCurrentAccountAmount();
答案 2 :(得分:0)
抱歉,我不喜欢这种代码;)
您使用以下代码违反 Law Of Demeter :
int num = clients[1].CurrentAccount.getAmount();
必须隐藏客户端因CurrentAccount
而达到金额值的事实。实际上,这会导致Client
类实现与您的陈述之间的耦合增加。
您应该在getCurrentAmount()
类中定义名为Client
的方法:
public class Client{
private CurrentAccount currentAccount;
//supposing constructor setting currentAccount here
//and below here, the new method
public long getCurrentAmount(){
return currentAccount.getAmount();
}
}
现在,您的Client
类实现将更好地封装:
int num = clients[1].getCurrentAmount();