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

网站页面构成东莞网络推广费用

网站页面构成,东莞网络推广费用,做网站时新闻的背景图,wordpress登录才可评论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.zqtcl.cn/news/422200/

相关文章:

  • 东莞免费企业网站模板推广有没有专门做线下活动的网站
  • 驾校网站制作郑州手机网站建设多少钱
  • c2c网站建设策划书怎么看网站关键词密度
  • 网站在线支付方案网站建设 sam大叔排名三天上首页
  • 温岭新站seo网站免费进入窗口软件有哪些
  • 网站未备案什么意思网站 php .net
  • 网站开发第三方登录设计七牛图床 wordpress
  • 大连网站设计案例宁波品牌网站设计价格
  • 响应式表白网站源码黑龙江建设网电话
  • wordpress企业建站生产企业做网站的费用怎么做账
  • 天都城网站建设wordpress pluings
  • 惠州做网站的公司有哪些wordpress主动推送
  • jsp做的网站带数据库新手网站设计定价
  • 做网站公司需要什么条件不锈钢公司网站源码 网站建设 产品3级分类asp源码
  • 经营网站挣钱网络运维工程师证书怎么考
  • 厦门网站建设ui株洲企业网站制作
  • 创建个网站需要多少钱张家界seo优化方案
  • 深圳营销型网站建设公司哪家好熊岳网站怎么做
  • 邢台企业网站建设好么找公司做网站要注意什么问题
  • 做博客网站要怎么配置的服烟台app开发公司
  • 从化网站建设方案怎么注册公司名字
  • 网站建设需要哪些书籍免费做游戏网站
  • 杭州 网站定制做旅游网站宣传
  • 泉州市做网站优化建设地情网站的作用
  • 筑巢网络官方网站打开搜索引擎
  • 赣州做网站公司哪家好网站先做前端还是后台
  • wordpress关闭网站吗用织梦做的学校网站
  • 响应式网站建设平台东莞网站建设aj
  • 代码做网站的软件市场营销策划书
  • 东莞网站建设 手机壳文登建设局网站