我将启动一个Java项目来开发桌面应用程序.什么用作表示层模式(MVC,MVP,MVVM或....)?
......如果有可能,用一些工作小例子...... :-)
有人可以提供MVP的具体(实际Java代码)示例吗?
这将包括以下3种类型以及它们如何调用彼此的方法来实现模式和处理/响应客户端响应:
我正在尝试在没有Dagger的情况下实现MVP(用于学习目的).但我遇到了问题 - 我使用Repository模式从缓存(共享首选项)或网络获取原始数据:
Shared Prefs|
|<->Repository<->Model<->Presenter<->View
Network|
Run Code Online (Sandbox Code Playgroud)
但要把手放在共享首选项上,我必须把它放在某个地方
presenter = new Presenter(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
我使用onRetainCustomNonConfigurationInstance/ getLastCustomNonConfigurationInstancepair来保持Presenter"保留".
public class MyActivity extends AppCompatActivity implements MvpView {
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
presenter = (MvpPresenter) getLastCustomNonConfigurationInstance();
if(null == presenter){
presenter = new Presenter(getApplicationContext());
}
presenter.attachView(this);
}
@Override
public Object onRetainCustomNonConfigurationInstance() {
return presenter;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
那么如何在没有Dagger的MVP中使用共享首选项并且不会导致Presenter依赖于上下文?
mvp dependencies android dependency-injection sharedpreferences
在经历大学和跟踪SO的发展时,我听到了很多关于模型 - 视图 - 控制器架构设计模式的知识.我甚至在我知道它之前就无意中使用了MVC模式,并且仍然在我的日常工作中使用它.从我所看到的,它可能是今天使用的最流行的模式.然而,我没有听到太多关于可以使用的替代模式而不是MVC.有哪些选项,以及您决定在MVC上使用它们的原因是什么?我也有兴趣了解它们常用的系统类型.最后,使用它们的优点和缺点是什么?
model-view-controller mvp architectural-patterns passive-view
如果从Presenter层打开一个反模式,它会是一个反模式Activity吗?
如果是这样,我应该从视图层管理应用程序的导航吗?
如何在MVP中创建视图?Presenter是否始终创建它们(除了子视图的视图外)?或者它是一个单独的第三方组件或应用程序或创建它们的东西?
我们还要补充一点,我可能会在Dojo Toolkit/ExtJS(即JavaScript)上执行此操作.
所以,我有这些代码行:
var v = new MyApp.view.User();
var p = new MyApp.presenter.User();
Run Code Online (Sandbox Code Playgroud)
这两条线应该在哪里准确?演示者是否实例化视图,反之亦然?什么实例化第一个实例?
为了完全将Android SDK与我的演示者类分离,我试图找出避免访问我们通常使用R的资源ID的最佳方法.我以为我可以创建一个接口来访问字符串资源之类的东西,但我仍然需要ID来引用字符串.如果我要做的事......
public class Presenter {
private MyView view = ...;
private MyResources resources = ...;
public void initializeView() {
view.setLabel(resources.getString(LABEL_RES_ID);
}
}
Run Code Online (Sandbox Code Playgroud)
我仍然需要LABEL_RES_ID,然后将其映射到R.string.label我的资源桥.这很酷,因为我可以在用其他东西进行单元测试时将其换掉,但我不想管理另一个到字符串值的映射.
如果我放弃并只使用R.string值,我的演示者将再次绑定到我的视图.那不理想?是否有一个更容易的解决方案,人们用来解决这个问题,以使他们远离主持人.我不想以超出Android提供的方式管理字符串,因为我仍然希望将它们放在布局文件中并获得国际化等的好处.我想做一个可以与这个演示者一起工作的哑单元测试无需Android SDK即可生成R.java文件.这要问太多了吗?
有没有关于如何最好地在任何地方构建Android应用程序的好例子或教程?
我是java和android的新手,我在asp.net中使用模型视图演示器和模型视图控制器的被动和监督控制器变体构建了winforms应用程序,但没有真正看到任何使用这些模式的android上的示例或代码.
人们如何在野外构建体面大小的Android应用程序.有没有最好的做法,或者我应该严格坚持官方的Android文档.
有没有人能够用任何JavaScript框架实现MVP模型?我无法弄清楚如何让演示者 - >从服务器代码到javascript的视图反转.我有一些想法,但有点hackish,并希望看到别人在做什么.
mvp ×10
android ×4
java ×3
dependencies ×1
javascript ×1
mvvm ×1
passive-view ×1
presenter ×1
testing ×1
theory ×1