我有3个实现以下接口的类:
public interface PolicyType {
public boolean isValid();
public void displayTemplate();
}
在我的主目录中,我创建并初始化了每个类的1个实例:
//the same method exists for MedicalPolicy and MotorPolicy
private static void displaySucMsg(TravelPolicy travelPolicy,List<TravelPolicy> travelPolicyList){
if(travelPolicy.isValid()) {
System.out.println("Policy: " + travelPolicy.getPolicyNo() + " was added successfully");
travelPolicyList.add(travelPolicy);
}
}
public static void main(String[] args){
List<TravelPolicy> travelPolicyList = new ArrayList<TravelPolicy>(2);
List<MotorPolicy> motorPolicyList = new ArrayList<MotorPolicy>(2);
List<MedicalPolicy> medicalPolicyList = new ArrayList<MedicalPolicy>(2);
TravelPolicy travelPolicy1 = new TravelPolicy(policyNo,param2,etc...);
displaySucMsg(travelPolicy1,travelPolicyList);
MotorPolicy motorPolicy = new MotorPolicy(policyNo,param2,etc...);
displaySucMsg(motorPolicy,motorPolicyList);
MedicalPolicy medicalPolicy = new MedicalPolicy(policyNo,param2,etc...);
displaySucMsg(medicalPolicy,medicalPolicyList);
}
如您所见,我List
为a分别创建了3 s,class
但我希望有1,List
因此最后我可以for loop
在上面使用a ,我的问题是displaySucMsg
该policyNo
字段使用getter方法(然后添加实例)到适当的列表),因此我无法创建List
of PolicyType
并将所有实例添加到其中。
我的问题是我应该创建一个List
of Object
(我认为这将是一种不好的做法)并添加所有3 List
s,还是应该添加public String getPolicyNo()
到我的接口中,因为我的所有3个类都具有该方法(我认为这也是一种不好的做法)因为如果我曾经创建过一个新的实现PolicyType
但不需要getPolicyNo()
方法的类,那将是非常糟糕的事情),还是应该只保留我的代码并for loop
在每个代码上运行1 ,List
还是有另一个解决方案?
班级设计应反映现实生活中的业务场景。因此,定义什么是“策略”以及该对象的强制属性和行为是什么。如果policyNo和policyType是重要属性,则不必担心它们永远为空。
如果碰巧认为某个属性是强制性的,但是随着业务场景的改变,情况就不再如此,那么您始终可以实现该属性并返回默认值,或者实际上在接口上具有默认实现。您甚至可以引入2个接口-OldPolicy和NewPolicy以适应“策略”定义的更改。
在您的示例中,添加getPolicyNo()
到接口PolicyType
并构建一个列表,该列表可以容纳3种策略类型的对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句