我有一个如下所示的界面
public interface ATMbusinessRule {
public Map<String, List<ATM>> exceute(String pobCode, String plientlogo)
throws BuisnessRuleException;
}
我有两个不同的类,如下所示,第一个
public class MaestroCardBusinessZZNFRuleImpl implements ATMbusinessRule {
public Map<String, List<ATM>> exceute(String pobCode, String ClientId)
throws BuisnessRuleException {
}
}
,第二个类显示为
public class MaestroCardBusinessXXNFRuleImpl implements ATMbusinessRule {
public Map<String, List<ATM>> exceute(String pobCode, String plientlogo)
throws BuisnessRuleException {
}
}
我想改变这个设计,因为我打算编写一个包含两个不同方法的简单类,调用者类将直接调用这两个方法并获取返回值,但我在想这个接口适合哪个这个标准。
请告诉我哪些其他设计标准最好
答案 0 :(得分:1)
为什么不使用没有接口的一个类...
public class MaestroCardBusiness {
public Map<String, List<ATM>> exceuteZZNFRule(String pobCode, String ClientId)
throws BuisnessRuleException {
}
public Map<String, List<ATM>> exceuteXXNFRule(String pobCode, String plientlogo)
throws BuisnessRuleException {
}
}
如果你想要接口,那么就不可能有一个具有2个方法实现的类,它们的区别仅在于它的参数列表。你已经拥有的代码是好的。但如果你坚持单一课程,那么上面的代码就足够了。
答案 1 :(得分:0)
接口的基本目的是公开您的方法,而不将其实现暴露给调用代码(如果这是您要在此处执行的操作)。现在,根据您要公开的方法数量,您可以在界面中放置许多方法,并根据需要实现多个方法。
如果这不是您想要的,并且您希望有一个简单的具体类,您可以或想要向调用代码公开,则不需要接口。只需在这种情况下编写您的类,而无需实现任何接口。
答案 2 :(得分:0)
以下是一个示例,如果由于某种原因,您想保留界面。 然后扩展它可能会有很大帮助。我会告诉你如何。 请注意,我更正了“执行”,“clientLogo”和“商业”的拼写错误。
<强>接口强>
public interface ATMbusinessRule {
public Map<String, List<ATM>> execute(String pobCode, String ClientId, String clientLogo) throws BusinessRuleException;
}
<强>类强>
public class MaestroCardBusinessRuleImpl implements ATMbusinessRule {
public Map<String, List<ATM>> executeRule(String pobCode, String clientId, String clientLogo) throws BuisnessRuleException {
if(clientId != null) {
executeZZNRule(String pobCode, String clientId);
} else {
executeXXNFRule(String pobCode, String clientLogo);
}
}
private Map<String, List<ATM>> executeZZNRule(String pobCode, String clientId) throws BuisnessRuleException {
// concrete ZZN implementation here
}
private Map<String, List<ATM>> executeXXNFRule(String pobCode, String clientLogo) throws BuisnessRuleException {
// concrete XXNF implementation here
}
}
现在你只需要打电话
maestroCardBusinessRuleImpl.execute(pobCode, clientId, null);
或
maestroCardBusinessRuleImpl.execute(pobCode, null, clientLogo);