在通用对象周围使用包装器而不是特定对象

时间:2018-03-21 15:40:44

标签: java oop design-patterns

我有一个设计问题我不太确定。假设我有这种“政策”,就像有人有汽车保险或其他什么。

有许多不同类型的政策一直在弹出,所以像地震,卡车运输,或像无人机一样,我希望这是通用的,所以它们都适合这个对象。我想将大部分细节存储在字符串hashmap中。

public class Policy
{
    static final long serialVersionUID = 20130901L;

    private String policynumber;
    private int policyId;
    private String pendingDocType;
    private int transactionTypeId;
    private List<Integer> lobs;
    private List<Integer> markets;
    private Insured insured;
    private Agent agent;
    private Map<String, Location> locations;
    private Map<String, String> details;
}

然后,对于每种不同的类型,我创建一个包装类,该类使用根据类型访问字段的方法扩展策略。所以,如果它是无人机,我会有像

这样的方法
getAnnualFlightDistance()
{
    return details.get("flightdistance");
}
getAnnualPremium()
{ 
    // Some method to calculate the current money spent on drone
}

但是只需要在主要的Policy类中使用辅助方法。

我会将它们作为附加到它的每个字段的成员变量,但是它们总是在变量中添加新的东西,我认为就像条件的bin一样可以允许不断变化的对象。

2 个答案:

答案 0 :(得分:0)

恕我直言如果您需要将这些字段用于某些业务操作,如getAnnualPremium情况,我建议使用显式属性。

保持一切尽可能通用可能听起来很诱人,但从长远来看,当您添加/删除/更改字段时,更改计算,验证等具有显式字段将比使用更加有用且更易于维护有一个字符串地图

答案 1 :(得分:0)

我建议你有一个名为policy的基类,在所有策略之间使用公共字段和方法,对于需要其他特定方法的任何策略创建接口并使特定策略实现它,这样你的系统将更简单和可扩展。

相关问题