継承よりも合成を頻繁に優先する必要があることがわかりました。その結果、生成する必要があるコード行の多くは、private final Contract implementation
とContract
インターフェイス メソッドの間のマッピングで構成されています。
(予測可能な) マッピングの例
public abstract class Sloth<T> extends BaseAnimal implements Valuator<T> {
private final Valuator<T> valuator = new GenericValuator<T>();
@Override
public void setValue(T value) {
valuator.setValue(value);
}
@Override
public void clearValue() {
valuator.clearValue();
}
@Override
public T getDefault() {
return valuator.getDefault();
}
@Override
public T getValue() {
return valuator.getValue();
}
@Override
public void addStorageBidListeners(OnStorageBid<T>... onStorageBid) {
valuator.addStorageBidListeners(onStorageBid);
}
}
このマッピングを自動生成する方法はありますか:
- 原則として、インターフェースと実装を提供するだけで十分でしょうか?
- 現時点では、すべての
valuator.
マッピングを手動で書き出していますが、そのような自動リファクタリングへのショートカットがあることを願っていますか?