我想在我的项目中使用带有匕首的MVP。 鉴于我有此方法,并将此对象传递给演示者:
@Override
public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
super.onLogin(user, cookie, sessionId, permissions);
presenter.onLogin(user, cookie, sessionId, permissions);
}
这是我的主持人:
public class Presenter implements ILogin.LoginPresenter{
private Context context;
@Inject
public Presenter(Context context) {
this.context = context;
}
@Override
public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
Intent intent = new Intent(context,MainActivity.class);///?
Bundle bundle = new Bundle();///?
bundle.putString("USER", user.getUserName());
intent.putExtras(bundle);
context.startActivity(intent);
}
我的模块什么都没有:
@Module
public class LoginModule {
}
我的问题:
使用匕首时,是否正在演示者中创建新对象(Intent
和Bundle
)?
如何在我的场景中使用匕首?这意味着在模块类中创建intent和bundle的新实例吗?
答案 0 :(得分:1)
MVP模式的重点是将业务逻辑与其观点分开。演示者中不包含任何与Android框架相关的代码是一种常见的好习惯(这里的演示者取决于android框架中的Context
,Intent
和Bundle
)。
对于您而言,您不应在演示者中创建Intent
和Bundle
,因为它们属于您的视图(MainActivity
)。
您的onLogin
函数如下所示:
@Override
public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
// whatever is your business logic
view.showMainActivity(user);
}
其中view
是由您的MainActivity
实现并插入到演示者中的接口。