package io.hefuyi.listener.mvp.usecase; /** * Use cases are the entry points to the domain layer. * * @param <Q> the request type * @param <P> the response type */ public abstract class UseCase<Q extends UseCase.RequestValues, P extends UseCase.ResponseValue> { private Q mRequestValues; public void setRequestValues(Q requestValues) { mRequestValues = requestValues; } public Q getRequestValues() { return mRequestValues; } public abstract P execute(Q requestValues); /** * Data passed to a request. */ public interface RequestValues { } /** * Data received from a request. */ public interface ResponseValue { } }