变压器应该使用什么样的模式?

时间:2015-03-27 19:21:02

标签: java generics inheritance design-patterns transformer

我有我的变换器抽象类:

public abstract class Transformer<T, S> {

    public abstract S transform(T object);

    public abstract T revert(S object);

    public List<S> transformArray(Collection<T> iterable) {
        try {
            List<S> transformed = new ArrayList<S>();
            Iterator<T> iterator = iterable.iterator();
            while (iterator.hasNext()) {
                T element = iterator.next();
                transformed.add(this.transform(element));
            }
            return transformed;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    public List<T> revertArray(Collection<S> iterable) {
        try {
            List<T> transformed = new ArrayList<>();
            Iterator<S> iterator = iterable.iterator();
            while (iterator.hasNext()) {
                S element = iterator.next();
                transformed.add(this.revert(element));
            }
            return transformed;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

}

我想拥有我的DTOTransformer,就像

public abstract class DTOTransformer<DTOREQ, OTHER, DTORES> {

    Transformer<DTOREQ, OTHER> forwardTransformer;
    Transformer<OTHER, DTORES> backwardTransformer;

    // Not overriding, since isn't and hasn't a transformer
    public OTHER transform(DTOREQ object) {
         return forwardTransformer.transform(object);
    }

    // Not overriding, since isn't and hasn't a transformer
    public DTORES revert(OTHER object) {
         return backwardTransformer.transform(object);
    }

}

问题是我实际上没有对reverseTransformer和forwardTransformer的transform()方法进行任何实现。我想要的是,当我从DTOTransformer创建一个子类时,例如ClientDTOTransformer然后我必须实现转换和恢复方法(这与Transformer&#39; s类提供的方法不同,因为我有一个& #34;三角形&#34;转换)。

我已经尝试过使用适配器模式,但我找不到实现它的方法。

你知道我怎么做吗?或者如果您知道更好的方法,我愿意接受建议。

0 个答案:

没有答案