package com.datascience.utils.transformations;
import com.datascience.utils.ITransformation;
/**
* @Author: konrad
*/
public class ComposingTransform<A, B, C> implements ITransformation<A, C> {
protected ITransformation<A, B> fstTransform;
protected ITransformation<B, C> sndTransform;
public ComposingTransform(ITransformation<A, B> fstTransform, ITransformation<B, C> sndTransform){
this.fstTransform = fstTransform;
this.sndTransform = sndTransform;
}
@Override
public C transform(A object) {
return sndTransform.transform(fstTransform.transform(object));
}
@Override
public A inverse(C object) {
return fstTransform.inverse(sndTransform.inverse(object));
}
}