创建基本 MVP Android 应用
Creating a Basic MVP Android App
public class MainActivity extends AppCompatActivity {
//text
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendMessage(View view) {
//Grab input
EditText editText = findViewById(R.id.editText);
String message = editText.getText().toString();
//Throw input onto the label
TextView destinationText = findViewById(R.id.destinationText);
destinationText.setText(message);
}
}
此应用的用户界面包含一个 EditText、一个 Textview 和一个按钮。该按钮将复制用户在 EditText 对象中键入的文本并将其放置在 TextView 中。
MVP 和 MVVM 似乎是当今最流行的设计模式。
本着学习其中一种架构设计模式的精神,我如何才能使这个最基本的应用程序适应 MVP 架构模式?
我绝对建议您在开始编写任何代码之前进行一些研究。今天 Android 提供了许多有趣的应用程序架构,尽管选择最适合您的架构并非易事,但这段旅程会让您学到很多东西。
一个很好的起点是 Google 在 GitHub 上的官方 architecture sample projects。您不仅有许多不同的架构,如 MVP、MVVM、MVI,而且每个架构中还有一些有趣的变体。
另一方面,Android 正在努力简化创建大量库的过程。这就是所谓的 Android 架构组件,here you have some of their samples 开始尝试并采用他们的模式。
最后,如果您仍然决定使用 MVP,那么在您的示例中您需要做一些事情:
- 您的
MainActivity
(视图)应实施该视图的契约(例如:MainViewContract
)。
- 在该视图中,您应该通过实现
MainViewContract
. 的视图的引用来获取对 MainPresenter
的引用
- MainPresenter 也会执行一个合约(例如:
MainPresenterContract
)。
基本上你需要的所有连接都已建立。 MainPresenter
将负责处理视图输入和输出的业务。在您的情况下,输入和输出非常简单:
输入(MainPresenterContract
):
void copyText(String textToCopy);
输出(MainViewContract
):
void showCopiedText(String copiedText);
当用户单击该按钮时,您将通过演示者本地实例发送消息 copyText
。然后,演示者将得到它并执行调用 showCopiedText
的输出。由于主视图 MainActivity
实现了 MainViewContract
,您将在视图的本地方法中收到输出消息,您只需在 Textview
.
上绘制文本
public class MainActivity extends AppCompatActivity {
//text
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendMessage(View view) {
//Grab input
EditText editText = findViewById(R.id.editText);
String message = editText.getText().toString();
//Throw input onto the label
TextView destinationText = findViewById(R.id.destinationText);
destinationText.setText(message);
}
}
此应用的用户界面包含一个 EditText、一个 Textview 和一个按钮。该按钮将复制用户在 EditText 对象中键入的文本并将其放置在 TextView 中。
MVP 和 MVVM 似乎是当今最流行的设计模式。
本着学习其中一种架构设计模式的精神,我如何才能使这个最基本的应用程序适应 MVP 架构模式?
我绝对建议您在开始编写任何代码之前进行一些研究。今天 Android 提供了许多有趣的应用程序架构,尽管选择最适合您的架构并非易事,但这段旅程会让您学到很多东西。
一个很好的起点是 Google 在 GitHub 上的官方 architecture sample projects。您不仅有许多不同的架构,如 MVP、MVVM、MVI,而且每个架构中还有一些有趣的变体。
另一方面,Android 正在努力简化创建大量库的过程。这就是所谓的 Android 架构组件,here you have some of their samples 开始尝试并采用他们的模式。
最后,如果您仍然决定使用 MVP,那么在您的示例中您需要做一些事情:
- 您的
MainActivity
(视图)应实施该视图的契约(例如:MainViewContract
)。 - 在该视图中,您应该通过实现
MainViewContract
. 的视图的引用来获取对 - MainPresenter 也会执行一个合约(例如:
MainPresenterContract
)。
MainPresenter
的引用
基本上你需要的所有连接都已建立。 MainPresenter
将负责处理视图输入和输出的业务。在您的情况下,输入和输出非常简单:
输入(MainPresenterContract
):
void copyText(String textToCopy);
输出(MainViewContract
):
void showCopiedText(String copiedText);
当用户单击该按钮时,您将通过演示者本地实例发送消息 copyText
。然后,演示者将得到它并执行调用 showCopiedText
的输出。由于主视图 MainActivity
实现了 MainViewContract
,您将在视图的本地方法中收到输出消息,您只需在 Textview
.