我应该创建对象列表还是更改界面?

丹尼尔·K:

我有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 ,我的问题是displaySucMsgpolicyNo字段使用getter方法(然后添加实例)到适当的列表),因此我无法创建Listof PolicyType并将所有实例添加到其中。

我的问题是我应该创建一个Listof Object(我认为这将是一种不好的做法)并添加所有3 Lists,还是应该添加public String getPolicyNo()到我的接口中,因为我的所有3个类都具有该方法(我认为这也是一种不好的做法)因为如果我曾经创建过一个新的实现PolicyType但不需要getPolicyNo()方法的类,那将是非常糟糕的事情),还是应该只保留我的代码并for loop在每个代码上运行1 List还是有另一个解决方案?

萨利姆(Salim):

班级设计应反映现实生活中的业务场景。因此,定义什么是“策略”以及该对象的强制属性和行为是什么。如果policyNo和policyType是重要属性,则不必担心它们永远为空。

如果碰巧认为某个属性是强制性的,但是随着业务场景的改变,情况就不再如此,那么您始终可以实现该属性并返回默认值,或者实际上在接口上具有默认实现。您甚至可以引入2个接口-OldPolicy和NewPolicy以适应“策略”定义的更改。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该每次创建一个新的Pool对象还是重用一个对象?

我应该使用“设置”还是“列表”

PostgreSQL:我应该更改现有索引还是创建新索引?

我应该使用对象还是文件级 val 创建单例?

我应该创建一个新变量还是始终从类对象访问数据?

我应该在创建对象的循环中引用实例还是类方法?

有什么好的做法-我应该创建一个新对象还是重用同一对象?

从多个数据源创建DataFrame时,我们应该使用for循环还是列表理解?

JPA存储库应该由表还是对象创建?

我应该使用html表格还是div作为歌曲列表?

我应该使用空列表还是将其设为选项?

我应该返回对堆对象的引用还是返回值?

我应该为流对象调用Close()还是Dispose()吗?

我应该使用对象文字还是构造函数?

我应该创建三个模型还是多态类型

我应该使用Vagrant还是Docker创建隔离的环境?

我应该为职位创建枚举还是集合?

我应该创建单个还是单独的Kubernetes规范文件?

我应该创建更多主题还是更多分区?

我应该创建View还是编写Query以获得更好的性能?

我应该选择->>还是@>

使用界面创建对象

当对象代表硬件组件时,我应该使用指向对象还是对象的指针?

Apache Commons NET:我应该在每个连接上创建一个新的FTPClient对象还是重用一个?

使用地图还是列表存储应该由对象属性访问的对象?

我应该使用Quartz2D创建思维导图界面吗?

函数应该返回新创建对象的指针,还是该对象的 unique_ptr?

当我创建 @ManyToOne 对象时,我应该将此对象添加到关系另一侧的列表中吗?

我应该重置VBA对象变量还是关闭设置的对象然后设置为新变量?