如何避免翻译对象中的重复代码?

时间:2015-11-22 12:32:52

标签: java inheritance interface superclass

我有一个名为Transformer的超类。我有两个派生类,它们将A类转换为B,反之亦然。有课程:

class A{
    private Long id;
    private String name;

    ... getter and setters
}

class B{
    private Long id;
    private String name;

    ... getter and setters
}

interface Transformer<S,D> {
    D convert(S source);
}

class ATransformer implements Transformer<A,B>{
    public B convert(A a){
        B b=new B();
        b.setId(a.getId());
        .....
        return b;
    }
}

class BTransformer implements Transformer<B,A>{
    public A convert(B b){
        A a=new A();
        a.setId(b.getId());
        .....
        return a;
    }
}

如您所见,派生的变换器类具有重复的代码。是否有任何设计或解决方案可以避免这种重复而不使用反射?

2 个答案:

答案 0 :(得分:0)

您可以使用像Dozerorika这样的bean映射器框架为您完成工作(并为您提供重复的代码)。 然而,正如在其他评论中已经提到的那样,(在大多数情况下)最好避免在没有它们在同一类hirarchy并因此可转换的情况下具有几乎相同的类。

答案 1 :(得分:-1)

创建C类并从C扩展A和B. 然而转换是因为你使用cast:)