网站板块怎么做,织梦pt官网,dw网页设计官网,手机网站建设项目前言#xff1a;虽然安卓出现的时间比其它平台软件比较晚#xff0c;但是在我们的安卓开发中#xff0c;一样可以使用我们所熟知的设计模式来给它一个合理、完善的结构#xff0c;这样#xff0c;才可以使我们在平常开发的时候减少冗余代码的发生#xff0c;真正的提高效…
前言虽然安卓出现的时间比其它平台软件比较晚但是在我们的安卓开发中一样可以使用我们所熟知的设计模式来给它一个合理、完善的结构这样才可以使我们在平常开发的时候减少冗余代码的发生真正的提高效率。 平常我们可能会遇到这样的需求在一个页面中用来展示图片或者文字(我们称之为大湿胸)而另一个页面除了和大湿胸长得一模一样之外它还有一个功能是选择(我们称之为二湿弟)遇到这种情况你会怎么做呢当类似于这样的情况在你的APP中有很多种怎么办呢你会怎么选择是一遍遍的拷贝粘贴还是先静下来想想如何设计它呢 好如果你选择的是第一种可能下面的话就有些不太适合你了可以直接关闭了。
如果你选择的是第二种请跟我来我们一起来看看这个功能该如何设计。
先来一张设计概要UML图(高清大图请移步http://download.csdn.net/detail/u011064099/9277071)
这张图的所展现出的设计使用了MVP模式即IView为我们的ViewAbstIData为我们的ModelPresenter则是Presenter。对于怎么使用它们这篇文章对它进行了概要说明。
好我来解释一下这张图我们看到的一整大块的蓝色是包表示这属于同一系列的东西从左上角开始看起这个包被定义为界面也就是说它只是负责界面的绘制以及响应用户的操作AbstIData则表示我们的数据包里面有4项实现类表示从4中不同的渠道获取数据。我们的核心则是Presenter它里面定义了我们数据以及界面的组合方式。它们共同继承IConnect接口用于相互之间的通讯。
为了符合设计原则我们的抽象标准则放入了与我们实际功能有关的部分它们是一一对应的ActivityA集成了RecyclerView则我们使用的Presenter也是与RecyclerView有关系的所以它实现了IRecyclerView接口这个接口中定义了RecyclerView所必须的拥有的要素以便在实例化的时候可以从外部注入它为RecyclerPresenter。 为了既有图片展示又有选择功能我们的核心所在则是左下角这一块图片类型适配器这个类它是与图片有关操作的一个抽象类我们可以继承它以便可以定义很多种图片的展示效果在图片类型适配器的内部放置了一个图片选择功能辅助类它专门用来处理图片选择之类的问题比如图片的选择与不选择的界面处理以及获取被选中的结果等等总之图片的选择功能全部由它来进行操作。它可以使用反射的方式来与适配器内部进行逻辑挂钩比如对展示布局进行选择控件的添加等等。这里使用了桥梁模式所以我们的选择样式就不用单独去做了只用把它们之间的功能组合一下就可以。 中间下部的是我们平常所知道的ViewHolder每个布局则需要去对应不同的ViewHolder如果是遇到选择的功能则可能ViewHolder类的个数要翻一倍了所以这里最好是使用万能的ViewHolder。右下部分则是我们RecyclerView需要使用的LayoutManager这里我们在组装Presenter的时候就可以直接对它进行定义。 所以对于我们的图片展示选择的这个例子来说我们的核心部分是RecyclerPresenter我们在定义它的子类的时候会定义一切可自定义的东西比如数据来源数据解析方式使用什么样的适配器使用什么样的ViewHolder使用什么样的LayoutManager我们需要它们里面进行精妙复杂的组合最终提供给ActivityA去使用。
使用示例 class 用于展示网络数据Presenter
{new NetData();//数据的输入来源new RViewAdapter(boolean 是否启动选择功能);new ViewHolder();//最好使用万能适配器new GridLayoutManager();//RecyclerView的布局方式}ShowListImageActivity.startInstance(mContext, SelectLocalPhotoPresenter.class);好整体的思路就是这样在实现过程中还有不少需要调整的地方请大家批评指正。欢迎多多讨论。