当前位置: 首页 > 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.pierceye.com/news/738768/

相关文章:

  • 武城网站建设费用网页设计试题及答案
  • 郑州外贸网站建设公司搜索引擎排名的三大指标
  • 温州专业微网站制作电台 主题 wordpress
  • wordpress做网站过程阳江网上车管所
  • 网站抓取qq上海自贸区注册公司流程
  • 深圳网站设计推荐刻烟台制作网站有哪些
  • 网站注册系统源码卢松松博客源码 wordpress博客模板
  • 网站开发进阶实训报告廊坊安次区网站建设公司
  • jquery插件网站推荐打开网站自动跳转代码
  • 佛山顺德容桂网站制作写作平台
  • 网站源码下载pdf文件品质好房
  • 山网站建设长沙网站开发湖南微联讯点不错
  • 网站建设的方案模板邢台123今天的招聘信息
  • 一个网站做app网站如何做收款二维码
  • 济南seo网站优化网站开发源代码 百度文库
  • 东西湖区建设局网站制作网站需要钱吗
  • 自己买服务器能在wordpress建网站欧美色影网站
  • 网站支付页面设计金华企业网站建设公司
  • wordpress评论模块临沂seo网站管理
  • 四川法制建设网站产品推广步骤
  • 服务器 网站建设比较容易做流量的网站
  • 网站建设基础实训报告天津滨海新区地图全图
  • 兰西网站建设深圳58同城招聘网
  • 兰州网站建设程序烟台赶集网网站建设
  • 自己建立网站后怎么做淘客wordpress需要npv
  • 简单网站建设推荐wordpress主题ashley
  • 单页网站开发实例下载电商营销渠道有哪些
  • 沈阳科技网站首页东营市做网站
  • 网站移动端开发公司客户评价网站建设
  • 有没有做问卷还能赚钱的网站鲜花网站数据库建设