gpt4 book ai didi

android - 在 MVP 模式中为回调函数创建一个单独的接口(interface)是否可以

转载 作者:行者123 更新时间:2023-11-29 18:54:33 24 4
gpt4 key购买 nike

我正在尝试使用 MVP 设计模式 创建一个应用程序。这是我第一次使用这种模式,这就是我不太关心我是否正确遵循这种模式的原因。

这就是我到目前为止所做的。我没有使用 Dagger2

界面

public interface MainActivityMVP {

interface Model{
void sendTokenToServer(MainActivityMVP.Presenter presenter);
}

interface View{
boolean isPnTokenRegistered();
void tokenUpdated();
void tokenFailedToUpdate();
}

interface Presenter{
void tokenUpdatedSuccessfully();
void tokenAlreadyExists();
void detachView();
}

MainActivity 上,我创建了一个 PresenterModel 的实例,并将 Model 对象传递给 Presenter 构造函数

主 Activity

    public class MainActivity extends BaseActivity implements MainActivityMVP.View {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);

mainPresenter= new MainPresenter(this, new MainModel());
mainPresenter.sendFCMTokenToServer();
}

在 Presenter 上,我调用 Model 的 方法来执行操作,并将 presenter 引用传递给它。

演示者

    public class MainPresenter implements MainActivityMVP.Presenter{

MainActivityMVP.View view;
MainActivityMVP.Model model;


public MainPresenter(MainActivityMVP.View view, MainActivityMVP.Model model){
this.view= view;
this.model= model;
}


public void sendFCMTokenToServer() {
model.sendTokenToServer(this);
}

@Override
public void tokenUpdatedSuccessfully() {
view.tokenUpdated();
}

@Override
public void tokenAlreadyExists() {
view.tokenFailedToUpdate();
}

在模型中,我创建了 PreferenceManager 类的实例,它从 SharedPreference 获取数据

public class MainModel implements MainActivityMVP.Model {

PreferencesHelper preferencesHelper;


public MainModel(){
preferencesHelper= new PreferencesHelper();
}

@Override
public void sendTokenToServer(MainActivityMVP.Presenter presenter) {

if (preferencesHelper.getNotificationSettings().isEmpty()) {
//do stuff

presenter.tokenUpdatedSuccessfully();
}
}

现在我有这些问题。

  • 上述实现 MVP 模式的方法是否可以,或者我是这里遗漏了一些东西。

  • 如果我添加另一个接口(interface)用于回调或传递,是否可以?Presenter to model 是更好的方法,正如我看到的一些例子他们将 interactor 引用传递给模型。

  • MVP模式是否需要创建Interactor Class

  • 如果我创建一个单独的Repository 接口(interface),

最佳答案

开发人员有不同的 MVP 实现方式。很少有人使用交互器。在 MVP 中使用交互器不是强制性的。由于您处于起步阶段,我将在下面建议您。

 public interface MainView extends BaseView {
boolean isPnTokenRegistered();
void tokenUpdated();
void tokenFailedToUpdate();
}

然后让你的basepresenter变成这样

public interface BasePresenter<V extends BaseView> {

void setView(V view);

void destroyView();

void destroy();
}

现在是您的主讲人

    public class MainPresenter implements BasePresenter<MainView>{

MainView view;
PreferencesHelper preferencesHelper;

MainPresenter(){
preferencesHelper= new PreferencesHelper();
}

@Override
public void setView(MainView view) {
this.view = view;
}

@Override
public void destroyView() {
this.view = null;
}

@Override
public void destroy() {

}

public void sendFCMTokenToServer() {
//Do whatever you want
}

}

终于有这样的 Activity 了,

public class MainActivity extends BaseActivity implements MainView {

MainPresenter mainPresenter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
mainPresenter= new MainPresenter();
mainPresenter.attachView(this)
mainPresenter.sendFCMTokenToServer();

}

关于android - 在 MVP 模式中为回调函数创建一个单独的接口(interface)是否可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com