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

办公空间设计定位镇海seo关键词优化费用

办公空间设计定位,镇海seo关键词优化费用,小公司网站模版,深圳保障性住房可以买卖吗前言在做Android开发时,我们通常为了更合理,更高效,优质的开发项目,并不是直接上来就开始开发功能,而是先搭建好自己的一个开发框架,一个好的开发框架,通常会让我们事倍功半,它就好比我们去建造一个房子,如果你的地基打的越深,越牢固,那么就可以建造出很高很大的房子.在搭建一个…前言在做Android开发时,我们通常为了更合理,更高效,优质的开发项目,并不是直接上来就开始开发功能,而是先搭建好自己的一个开发框架,一个好的开发框架,通常会让我们事倍功半,它就好比我们去建造一个房子,如果你的地基打的越深,越牢固,那么就可以建造出很高很大的房子.在搭建一个框架前,我们先要考虑一下,这个框架要达到一个什么样的效果,主要从下面三点来进行考虑:降低项目的复杂度易扩展,易修改,可用性强,可维护性强职责单一,功能清晰Mvp模式介绍优势分离了视图逻辑和业务逻辑降低了耦合。Activity只处理生命周期的任务代码变得更加简洁。视图逻辑和业务逻辑分别抽象到了View和Presenter的接口中提高代码的阅读性。Presenter被抽象成接口可以有多种具体的实现所以方便进行单元测试。把业务逻辑抽到Presenter中去避免后台线程引用着Activity导致Activity的资源无法被系统回收从而引起内存泄露和OOM。实际应用框架图此图是我搭建Mvp模式的一个架构图,V层与M层分离,通过P层来建立联系,V层主要显示UI,M层进行网络请求,数据库等操作,P层作为一个中心管理器,连接M层和V层.分包如下图:image.pngbase 存放app的基类common 存放一些常量,接口,公用的东西contract 连接V层和P层的一个契约包model M层,数据库,网络请求,服务等业务操作presenter P层,负责连接V层和M层,中心管理器ui V层,负责UI的展示utils 存放工具类widget 存放自定义的一些组件步骤介绍第一步 编写基类BaseActivity,BasePresenter,IBasePresenter,IBaseViewIBasePresenter代码如下:public interface IBasePresenter {/*** 绑定View* param mView*/void attachView(V view);}IBaseView代码如下:public interface IBaseView {}BasePresenter代码如下:public abstract class BasePresenter implements IBasePresenter {//数据管理,负责M层的业务逻辑操作protected DataManager mDataManager;//V层的引用protected V mView;/*** 初始化DataManager*/public BasePresenter(){//数据库AppDbHelper appDbHelper new DbHelper();//共享参数存储AppPreferenceHelper appPreferenceHelper new PreferenceHelper();//网络请求AppApiHelper appApiHelper new ApiHelper();mDataManager new DataManager(appDbHelper, appApiHelper, appPreferenceHelper);}/*** 绑定view* param view*/Overridepublic void attachView(V view) {this.mView view;}}BaseActivity代码如下:public abstract class BaseActivity extends AppCompatActivity implements IBaseView{//P层的应用protected P mPresenter;Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(getLayoutId());//初始化mPresenterinitPresenter();//绑定viewif(mPresenter ! null){mPresenter.attachView(this);}//初始化initView();}/*** 初始化mPresenter*/protected abstract void initPresenter();/*** 初始化*/protected abstract void initView();/*** 获取布局id* return*/protected abstract int getLayoutId();}第二步 编写测试类MainActivity(V),MainContract(契约),MainPresenter(P),DataManager(M)MainActivity代码如下:public class MainActivity extends BaseActivity implements MainContract.View {Overrideprotected void initPresenter() {mPresenter new MainPresenter();}Overrideprotected void initView() {mPresenter.testGetMpresenter();mPresenter.testDb();mPresenter.testRequestNetwork();mPresenter.testPreference();}Overrideprotected int getLayoutId() {return R.layout.activity_main;}Overridepublic void testGetMview() {Log.d(print, 我是V层的引用);}}MainPresenter代码如下:public class MainPresenter extends BasePresenter implements MainContract.Presenter{Overridepublic void testGetMpresenter() {Log.d(print, 我是P层的引用);mView.testGetMview();}Overridepublic void testDb() {mDataManager.testDb();}Overridepublic void testRequestNetwork() {mDataManager.testRequestNetwork();}Overridepublic void testPreference() {mDataManager.testPreference();}}MainContract代码如下:public interface MainContract {interface View extends IBaseView{void testGetMview();}interface Presenter extends IBasePresenter{void testGetMpresenter();void testDb();void testRequestNetwork();void testPreference();}}DataManager代码如下:public class DataManager implements AppDbHelper,AppApiHelper,AppPreferenceHelper{private AppDbHelper mAppDbHelper;private AppApiHelper mAppApiHelper;private AppPreferenceHelper mAppPreferenceHelper;public DataManager(AppDbHelper mAppDbHelper, AppApiHelper appApiHelper, AppPreferenceHelper appPreferenceHelper) {this.mAppDbHelper mAppDbHelper;this.mAppApiHelper appApiHelper;this.mAppPreferenceHelper appPreferenceHelper;}Overridepublic void testDb() {mAppDbHelper.testDb();}Overridepublic void testRequestNetwork() {mAppApiHelper.testRequestNetwork();}Overridepublic void testPreference() {mAppPreferenceHelper.testPreference();}}第三步 编写数据库,网络请求等类AppDbHelper代码如下:public interface AppDbHelper {void testDb();}DbHelper代码如下:public class DbHelper implements AppDbHelper{Overridepublic void testDb() {Log.d(print, 数据库操作);}}AppApiHelper代码如下:public interface AppApiHelper {void testRequestNetwork();}ApiHelper代码如下:public class ApiHelper implements AppApiHelper{Overridepublic void testRequestNetwork() {Log.d(print, 网络请求操作);}}AppPreferenceHelper代码如下:public interface AppPreferenceHelper {void testPreference();}PreferenceHelper代码如下:public class PreferenceHelper implements AppPreferenceHelper{Overridepublic void testPreference() {Log.d(print, 共享参数存储操作);}}运行效果图:效果图总结Mvp模式在Android开发中被使用的越来越多,尤其是配合RxJavaRetrofitOkhttpDagger2Glide等第三方开源库,好处不用多说,所以大家赶紧都用起来吧,最后附上Mvp模式Demo如果大家对我的文章感兴趣的话,请给我点个赞!!!
http://www.zqtcl.cn/news/738768/

相关文章:

  • 深圳建设银行官方网站wordpress 添加qq
  • 甘肃第九建设集团公司网站网站对企业的好处
  • 论坛网站建设规划书公司网站建设与设计制作
  • 做棋牌游戏网站犯法吗如何进行搜索引擎的优化
  • 常见的网站首页布局有哪几种陈光锋网站运营推广新动向
  • 手机网站活动策划方案开一个设计公司
  • 宝塔建设网站教程visual studio 2010 网站开发教程
  • 做网站购买服务器做谷歌网站使用什么统计代码吗
  • 网站系统与网站源码的关系emlog轻松转wordpress
  • 网站的简介怎么在后台炒做吉林省住房城乡建设厅网站首页
  • 泉州易尔通网站建设国际酒店网站建设不好
  • 网页下载网站福田企业网站推广公司
  • 北京网站建设开发公司哪家好网站添加在线留言
  • 新建的网站怎么做seo优化平面广告创意设计
  • yy陪玩网站怎么做软件项目管理计划
  • 西安建网站价格低百度推广区域代理
  • 中英网站模板 照明公司注册在自贸区的利弊
  • 全球十大网站排名wordpress标题连接符
  • 网站开发可能遇到的问题四川建筑人才招聘网
  • 镇江网站托管怎么做淘宝网站赚钱吗
  • 交互式网站是什么知名vi设计企业
  • 上海个人做网站网站建设销售好做嘛
  • 邵阳建设网站哪家好手机网站栏目结构图
  • 做动车哪个网站查网站环境配置
  • 那些网站可以做h5国内新闻最新消息今天简短
  • asp网站开发实例河南省建设招投标网站
  • 营销型网站搭建公司有没有专做推广小说的网站
  • 汕头网站搭建wordpress文章列表摘要
  • 网站开发体会800字网站开发新功能
  • 网站域名查询ip杭州pc网站开发公司有哪些