当前位置: 首页 > news >正文

网站程序开发制作十大品牌曲周县建设局网站

网站程序开发制作十大品牌,曲周县建设局网站,浙江建设信息网,长沙专业做网站MVP架构简介 MVP#xff08;Model-View-Presenter#xff09;是一种常见的软件架构模式#xff0c;尤其在Android应用开发中被广泛使用。它将应用程序分为三层#xff1a;Model、View 和 Presenter#xff0c;以实现职责分离#xff0c;提高代码的可维护性和可测试性。 …MVP架构简介 MVPModel-View-Presenter是一种常见的软件架构模式尤其在Android应用开发中被广泛使用。它将应用程序分为三层Model、View 和 Presenter以实现职责分离提高代码的可维护性和可测试性。 1. Model模型 定义负责处理应用程序的数据逻辑包括与数据库、网络、API等数据源的交互。职责提供数据并将其返回给 Presenter不涉及任何UI相关逻辑。 2. View视图 定义负责展示用户界面接收用户的输入并将其传递给 Presenter。职责展示由 Presenter 提供的数据并根据用户操作调用 Presenter 的方法。View 层不直接处理逻辑只展示内容。 3. Presenter演示者 定义作为 View 和 Model 之间的桥梁负责处理逻辑和协调数据流。职责 从 View 接收用户输入调用 Model 获取数据。将数据处理结果返回给 View 以更新UI。Presenter 不直接操作UI而是通过接口与 View 进行交互。 MVP与MVC的区别 1. 核心组成部分的区别 MVP Model负责数据逻辑的处理类似于MVC中的Model。View展示数据、处理用户界面交互但不会直接处理业务逻辑所有逻辑都交给 Presenter。Presenter作为中间层负责从 Model 获取数据并处理业务逻辑然后将数据传递给 View。Presenter 直接与 View 交互。 MVC Model同样负责数据逻辑的处理与 MVP 中的 Model 类似。View展示数据并处理用户输入但可以直接与 Controller 进行交互。Controller控制器响应用户的输入更新 Model 和 View但它不直接操作 View而是通知 View 自行更新。 2. 交互方式的区别 MVP View 与 Model 之间没有直接交互。View 只负责调用 PresenterPresenter 是唯一能与 Model 交互的部分然后 Presenter 将结果返回给 View 来更新界面。双向交互View 和 Presenter 是双向交互的View 可以调用 PresenterPresenter 也可以调用 View 来更新UI。 MVC View 可以直接与 Model 交互。在MVC中View可以直接从Model中获取数据虽然一般情况下是通过Controller来协调。单向交互View 和 Controller 之间的交互通常是单向的用户的输入会通过 View 传递给 ControllerController 再更新 Model最后通知 View 更新UI。 3. 视图的控制权 MVP Presenter 控制视图在MVP模式中Presenter 负责处理所有业务逻辑并决定何时以及如何更新 View。View 不进行逻辑处理只是被动地展示数据。 MVC Controller 充当中介在MVC中Controller 只是起到协调作用它不会主动控制 View 的更新通常会将新的数据传递给 View 或通知 View 进行自我更新。 MVP架构优点 View层与Model层完全分离 所有View层 和 Model层 逻辑交互都在Presenter 后续扩展性/可维护性强M层(负责数据业务模型) P层(负责M层与V层的交互逻辑) 定位修改Bug方便 如果是修改界面交互相关的直接找V层修改 如果是修改数据业务逻辑直接找M层修改 MVP架构特点 关系 View收到用户的操作 View把用户的操作交给Presenter Presenter直接操作Model进行业务逻辑处理 Model处理完毕后通知Presenter Presneter收到通知后在去更新View 方式 是双向的通信方式 优点 View层与Model层完全分离所有的逻辑交互都在PresenterMVP分层较为严谨 示例 Model (数据层) Model 负责处理数据逻辑判断用户名和密码是否正确。 public class LoginModel {// 模拟用户登录数据public boolean validateUser(String username, String password) {// 简单模拟假设用户名为user密码为password时登录成功return username.equals(user) password.equals(password);} }View (视图层) View 负责显示界面并将用户的输入传递给 Presenter它不会直接处理业务逻辑。 public interface LoginView {// 展示登录成功的信息void showLoginSuccess();// 展示登录失败的信息void showLoginError();// 获取用户名String getUsername();// 获取密码String getPassword(); }具体实现 public class LoginActivity extends AppCompatActivity implements LoginView {private EditText usernameEditText, passwordEditText;private Button loginButton;private LoginPresenter presenter;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);usernameEditText findViewById(R.id.username);passwordEditText findViewById(R.id.password);loginButton findViewById(R.id.login_button);presenter new LoginPresenter(this, new LoginModel());loginButton.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {presenter.onLoginClicked();}});}Overridepublic void showLoginSuccess() {Toast.makeText(this, 登录成功, Toast.LENGTH_SHORT).show();}Overridepublic void showLoginError() {Toast.makeText(this, 登录失败, Toast.LENGTH_SHORT).show();}Overridepublic String getUsername() {return usernameEditText.getText().toString();}Overridepublic String getPassword() {return passwordEditText.getText().toString();} }Presenter (逻辑层) Presenter 负责处理业务逻辑并将数据从 Model 传递到 View。 public class LoginPresenter {private LoginView view;private LoginModel model;public LoginPresenter(LoginView view, LoginModel model) {this.view view;this.model model;}// 当用户点击登录按钮时调用public void onLoginClicked() {String username view.getUsername();String password view.getPassword();// 通过 Model 验证用户输入if (model.validateUser(username, password)) {view.showLoginSuccess();} else {view.showLoginError();}} }布局文件 (activity_login.xml) 简单的登录界面包含输入框和按钮。 LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroid:padding16dpEditTextandroid:idid/usernameandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint用户名 /EditTextandroid:idid/passwordandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint密码android:inputTypetextPassword /Buttonandroid:idid/login_buttonandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:text登录 / /LinearLayout工作流程 用户在 LoginActivity 中输入用户名和密码并点击登录按钮。LoginActivity 作为 View 层将用户输入传递给 LoginPresenter。LoginPresenter 从 View 获取用户名和密码并调用 LoginModel 来验证用户输入。LoginModel 验证输入是否正确然后将结果返回给 LoginPresenter。LoginPresenter 根据验证结果通知 LoginActivity 更新UI显示登录成功或失败的消息。 已经到底啦
http://www.w-s-a.com/news/714128/

相关文章:

  • 罗源福州网站建设个体户可以网站备案吗
  • 网站开发 专有名词pc网站建设和推广
  • 上海部道网站 建设conoha wordpress
  • 手机测评做视频网站宝塔可以做二级域名网站么
  • 代理公司注册济南重庆seo优化效果好
  • 佛山市骏域网站建设专家徐州网站建设价格
  • 公司做网站多济南好的网站建设公司排名
  • 网站维护的方式有哪几种该网站在工信部的icp ip地址
  • 中小企业服务中心网站建设做考勤的网站
  • 大连网站建设报价wordpress实用功能
  • 学校网站建设自查报告电脑网站制作教程
  • 适合推广的网站世界搜索引擎公司排名
  • 合肥网站建设费用ppt在哪个软件制作
  • 湖南省住房和城乡建设厅门户网站网站建设课程性质
  • 如何设计公司网站公司网站空间要多大
  • 建筑公司网站排名5G网站建设要多少个
  • seo怎样新建网站弹簧东莞网站建设
  • 在线做爰直播网站石家庄房产
  • 建筑网站哪里找拓者设计吧首页
  • 广州网站的建设wordpress注册数学验证码
  • 装修平台自己做网站有几个黄页名录网站开发
  • php网站的安全优势平面设计师培训
  • 乐清市网站建设设计重庆沙坪坝区
  • 什么是seo站内优化开发网页的工具有哪些
  • 文化类网站是不是休闲娱乐类网站青州市建设局网站
  • 网站的中英文切换代码做现货黄金网站
  • 万江区网站建设公司前端如何根据ui设计写页面
  • 宿迁公司做网站手机免费创建网站的软件
  • 免费可商用素材网站山东威海网站开发
  • 建设网站什么语言比较合适柳州建设网经济适用房