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

中铁建设集团门户网登陆最优惠的网站优化

中铁建设集团门户网登陆,最优惠的网站优化,黄页电话号码本,美容医疗 网站建设MVC MVC #xff0c;早期的开发架构#xff0c;在安卓里#xff0c;用res代表V#xff0c;activity代表Controller层#xff0c;Model层完成数据请求#xff0c;更新操作#xff0c;activity完成view的绑定#xff0c;以及业务逻辑的编写#xff0c;更新view#xf…MVC MVC 早期的开发架构在安卓里用res代表Vactivity代表Controller层Model层完成数据请求更新操作activity完成view的绑定以及业务逻辑的编写更新view这种模式是单向的虽然代码存在分层但是之间的耦合性还是很高并且C层做的事情很多久而久之会变得臃肿。 代码实现 ViewModel static class StudentModel{private String name;private int age;public StudentModel(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}}View层 static class StudentView{public void PrintStudentData(String name ,int age){System.out.println(Student name:name age:age);}} Controller static class StudentController{StudentModel model;StudentView view;public StudentController(StudentModel model, StudentView view) {this.model model;this.view view;}public void setStudentName(String name){model.setName(name);}public String getStudentName(){return model.getName();}public void setStudentAge(int age){model.setAge(age);}public Integer getStudentAge(){return model.getAge();}public void updateView(StudentView view){view.PrintStudentData(model.getName(),model.getAge());}} 完整代码 package com.example.lib;public class MvcTest {public static void main(String[] args) {StudentModel student getStudentDataBase();StudentView view new StudentView();StudentController controller new StudentController(student,view);controller.updateView(view);controller.setStudentName(lisi);controller.updateView(view);}public static StudentModel getStudentDataBase(){return new StudentModel(zhangsan,18);}static class StudentModel{private String name;private int age;public StudentModel(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}}static class StudentView{public void PrintStudentData(String name ,int age){System.out.println(Student name:name age:age);}}static class StudentController{StudentModel model;StudentView view;public StudentController(StudentModel model, StudentView view) {this.model model;this.view view;}public void setStudentName(String name){model.setName(name);}public String getStudentName(){return model.getName();}public void setStudentAge(int age){model.setAge(age);}public Integer getStudentAge(){return model.getAge();}public void updateView(StudentView view){view.PrintStudentData(model.getName(),model.getAge());}}}MVP 于是出现了MVP模式这个架构模式在安卓移动端开发中比较常见将Activity和res统一作为V层Model层还是完成数据的请求和更新新建了一个类Presenter用来作为P层这样的好处是方便管理每一个Activity的业务逻辑拿到数据后通过接口回调的方式更新View层实现了双向通信。缺点是需要实现Presenter类并且需要开发接口对简单的业务逻辑比较繁琐且P层的事情还是比较臃肿 代码实现以登录事务为例 ViewModel层 相比与MVC的ViewModel,MVP的不同在于ViewModle多实现了一个IUser接口从而实现双向通信 interface IUser{void login(String name,String password,OnLoginListener listener);}interface OnLoginListener{void loginFail();void loginSuccess(User user);}static class UserModel implements IUser{Overridepublic void login(String name, String password, OnLoginListener listener) {//模拟一下登录if(name.equals(admin)password.equals(123456)){User user new User();user.setUsername(name);user.setPassword(password);listener.loginSuccess(user);}else{listener.loginFail();}}} View层 在Android开发中MVP架构模式里View层指的是Activity和res。同理也实现了一个IUserLogin接口从而和P层实现双向通信 static class UserView implements IUserLogin{Overridepublic void showLoading() {System.out.println(正在登录...);}Overridepublic void hideLoading() {System.out.println(登录完成,获取结果);}Overridepublic void loginFail() {System.out.println(登录失败);}Overridepublic void loginSuccess(User user) {System.out.println(username: user.getUsername() 登陆成功);}}interface IUserLogin{void showLoading();void hideLoading();void loginFail();void loginSuccess(User user);} Presenter层 static class UserPresenter {private final UserModel userModel;private final UserView userView;private final User user;public UserPresenter(UserView userView) {this.userModel new UserModel();this.userView userView;user new User(admin,123456);}void login(){userView.showLoading();userModel.login(user.getUsername(), user.getPassword(), new OnLoginListener() {Overridepublic void loginFail() {userView.hideLoading();userView.loginFail();}Overridepublic void loginSuccess(User user) {userView.hideLoading();userView.loginSuccess(user);}});}} 完整代码如下 package com.example.lib;public class MvpTest {public static void main(String[] args) {UserView loginView new UserView();UserPresenter presenter new UserPresenter(loginView);presenter.login();}static class User{String username;String password;public User() {}public User(String username, String password) {this.username username;this.password password;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}}interface IUser{void login(String name,String password,OnLoginListener listener);}interface OnLoginListener{void loginFail();void loginSuccess(User user);}static class UserModel implements IUser{Overridepublic void login(String name, String password, OnLoginListener listener) {//模拟一下登录if(name.equals(admin)password.equals(123456)){User user new User();user.setUsername(name);user.setPassword(password);listener.loginSuccess(user);}else{listener.loginFail();}}}static class UserView implements IUserLogin{Overridepublic void showLoading() {System.out.println(正在登录...);}Overridepublic void hideLoading() {System.out.println(登录完成,获取结果);}Overridepublic void loginFail() {System.out.println(登录失败);}Overridepublic void loginSuccess(User user) {System.out.println(username: user.getUsername() 登陆成功);}}interface IUserLogin{void showLoading();void hideLoading();void loginFail();void loginSuccess(User user);}static class UserPresenter {private final UserModel userModel;private final UserView userView;private final User user;public UserPresenter(UserView userView) {this.userModel new UserModel();this.userView userView;user new User(admin,123456);}void login(){userView.showLoading();userModel.login(user.getUsername(), user.getPassword(), new OnLoginListener() {Overridepublic void loginFail() {userView.hideLoading();userView.loginFail();}Overridepublic void loginSuccess(User user) {userView.hideLoading();userView.loginSuccess(user);}});}}}MVVM 再后面就是MVVM同理Activity和res还是作为V层Model层请求数据和更新出现了一个ViewModel的层这个类的职责在于对数据进行绑定以数据驱动View层同样当视图层改变后Model层也能更新从而实现了M和V之间的双向绑定。最常用的是谷歌2015年推出的jetpack的组件DataBinding无须进行view绑定避免了空指针等很多繁琐的业务逻辑。 代码实现略用JetPack提供的databinding即可 总结 MVC,MVP,MVVM的出现都是为了视图分层使代码结构逻辑变得清晰同时实现类的单一职责降低耦合度。但是同时选用架构设计模式的时候也要根据业务类型来考虑避免出现大多繁琐的设计总之一切为了开发效率。
http://www.hkea.cn/news/14578114/

相关文章:

  • 百度在线做网站产品网站建站
  • 英文网站建设企业推广线上渠道
  • 虹口网站制作手机app下载软件
  • 易优建站系统电子商务中网站建设
  • 郑州视频网站建设Wordpress 搜索热词
  • 成立网站wordpress文章页全白
  • 网站建设 大纲深圳网站建设认准乐云践新
  • 天津市工程建设项目报建网站装修公司十大排名北京哪家好
  • 湛江网站建设的详细过程网络推广服务如何退费
  • wordpress 极速模板广州专业seo公司
  • 什么程序做网站安全网站速度怎么提升
  • 北京网站优化校学费弹窗网站制作
  • 建站兔软件下载网站建设包含内容
  • 手机制作钓鱼网站网站做装修
  • 北京金创网站建设做网站3年3万
  • 备案 网站起名wordpress前台代码编辑器
  • 做购物网站平台有专门教做家具的网站
  • 佛山市外贸网站建设价格山东卓创网络网站建设
  • 新手做网站优化怎么做网站方案报价
  • 天猫商城网站设计分析三明seo
  • 个人网站空间多大合适旅游网站开发代码
  • 盐城网站开发渠道合作什么是平面设计 都包括哪些内容
  • 手把手制作公司网站南京推广公司
  • 外贸网站设计案例短期网页设计师培训
  • 网站改版建议策划书电商网站设计费用
  • 企业自建网站有哪些网站首页引导页
  • 中山精品网站建设讯息wordpress文章列表多图展示
  • 山东网站制作网站部署到终端机怎么做
  • 三亚河北建设招聘信息网站公司手机版网站模板
  • 浙江振升建设有限公司网站婚纱摄影结婚网