Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该创建对象列表还是更改接口?_Java_List - Fatal编程技术网

Java 我应该创建对象列表还是更改接口?

Java 我应该创建对象列表还是更改接口?,java,list,Java,List,我有3个类实现以下接口: public interface PolicyType { public boolean isValid(); public void displayTemplate(); } 我主要创建并初始化了每个类的一个实例: //the same method exists for MedicalPolicy and MotorPolicy private static void displaySucMsg(TravelPolicy travelPolicy,

我有3个类实现以下接口:

public interface PolicyType {
    public boolean isValid();
    public void displayTemplate();
}
我主要创建并初始化了每个类的一个实例:

//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);
    }
//对于医疗政策和机动车辆政策也存在相同的方法
私有静态无效显示SUCMG(TravelPolicy TravelPolicy,List travelPolicyList){
if(travelPolicy.isValid()){
System.out.println(“策略:“+travelPolicy.getPolicyNo()+”已成功添加”);
travelPolicyList.add(travelPolicy);
}
}
公共静态void main(字符串[]args){
List travelPolicyList=new ArrayList(2);
List motorPolicyList=newarraylist(2);
List MedicalPolycylist=新ArrayList(2);
TravelPolicy travelPolicy1=新的TravelPolicy(保单号、参数2等);
displaySucMsg(travelPolicy1,travelPolicyList);
MotorPolicy MotorPolicy=新的MotorPolicy(保单编号、参数2等);
显示SUCMG(motorPolicy,motorPolicyList);
医疗政策医疗政策=新医疗政策(保单号、param2等);
显示SUCMG(医疗政策、医疗政策主义者);
}
正如您所看到的,我已经为一个
类创建了3个
列表
但我希望有1个
列表
,这样最后我就可以对其使用
for循环
,我的问题是
displaySucMsg
policyNo
字段使用getter方法(然后将实例添加到适当的列表)因此,我无法创建
PolicyType
列表
,并向其中添加所有实例


我的问题是,我应该为
对象
创建一个
列表
(我认为这是一种不好的做法),并将所有3个
列表添加到该列表中,还是应该将
公共字符串getPolicyNo()
添加到我的接口中,因为我的3个类都有该方法(我认为这也是一种糟糕的做法,因为如果我创建了一个实现
PolicyType
但不需要
getPolicyNo()
方法的新类,那将非常糟糕),或者我应该让代码保持原样,在每个
列表上运行1
for loop
,还是有其他解决方案?

类设计应该反映真实的业务场景。那么定义什么是“策略”如果policyNo和policyType是重要的属性,那么永远不要担心它们是空的

如果某个属性被认为是强制性的,但随着业务场景的变化,它不再是强制性的,那么您可以始终实现它并返回默认值,或者在接口上实际有一个默认实现。您甚至可以引入两个接口-OldPolicy和NewPolicy,以适应定义的变化关于“政策”


在您的示例中,将
getPolicyNo()
添加到接口
PolicyType
,并构建一个可以容纳3种策略类型的对象的列表。

如果所有
PolicyType
类都有getter,则在此类策略(不含
PolicyNo
)时将其添加到接口出现,以后再处理,通常这意味着模型没有正确定义。。。