我试图在Android示例中理解MVP流程。
LoginPresenter在其attachView方法中接受LoginView。但是在下面的示例中,这是传递但是传递的是LoginActivity的对象。 这是如何工作的?
如果LoginActivity实现了一个更多的接口说LogoutView,那么如何在loginPresenter.attachView(这个)这是LoginView而不是LogoutView?
public class LoginActivity extends BaseActivity implements LoginView {
@Inject
LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
loginPresenter.attachView(this); //how this ( LoginActivity
//instance )passed in here is
//working as LoginView but
//LoginPresenter accepts
//LoginView here.
//Need Explaination.
}
}
public class LoginPresenter extends BasePresenter<LoginView> {
@Override
public void attachView(LoginView mvpView) {
super.attachView(mvpView);
}
}
public class BasePresenter<T extends MVPView> implements Presenter<T> {
@Override
public void attachView(T mvpView) {
mMvpView = mvpView;
}
}
public interface Presenter<V extends MVPView> {
void attachView(V mvpView);
}
答案 0 :(得分:2)
implements
表示&#34;可以用作&#34;。
您的LoginActivity
实施LoginView
,因此可用作 LoginView
。
这很简单。
如果LoginActivity实现了另一个接口说LogoutView,那么如何在loginPresenter.attachView(this)中这是LoginView而不是LogoutView?
如果你的意思是这样的话:
class LoginActivity implements LoginView, LogoutView
然后,LoginActivity既可以用作LoginView
又 a LogoutView
。这有多酷!
为什么?
接口用于定义类具有哪些功能,即类可以做什么。
让我们说LoginView
看起来像这样:
interface LoginView {
void login(String userName, String password);
}
它表示LoginViews
必须能够login
使用用户名和密码。
实现此接口时,必须将此方法添加到实现类中。完成此操作后,您的班级可用作 a LoginView
。为什么?因为它有login
方法!