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

网站地图建设seo每日

网站地图建设,seo每日,代理办营业执照的公司,网站制作 广州一、基本概念1.1 定义桥接模式将 抽象部分 和 实现部分 分离,使它们可以独立的变化。抽象部分 会拥有 实现部分的接口对象,有了该对象后,就能够通过这个接口来调用 具体实现部分的功能。桥接在程序上就体现成了 抽象部分拥有实现部分的接口对…

一、基本概念

1.1 定义

桥接模式将 抽象部分 和 实现部分 分离,使它们可以独立的变化。抽象部分 会拥有 实现部分的接口对象,有了该对象后,就能够通过这个接口来调用 具体实现部分的功能。

桥接在程序上就体现成了 抽象部分拥有实现部分的接口对象,维护桥接就是维护这个关系,桥接模式中的桥接是一个 单方向 的关系,只能够 抽象部分去使用实现部分的对象,而不能反过来。

1.2 Demo

AAffA0nNPuCLAAAAAElFTkSuQmCC

类图定义 实现部分的接口或者抽象类,一般情况下是由实现部分提供基本的操作,而抽象部分定义的则是基于实现部分这些基本操作的业务的方法。/**

* 实现部分的接口对象。

*/public interface Implementor {    /**

* 操作行为。

*/

void operation();

}

其具体的实现分为两种:public class ImplementorA implements Implementor {    @Override

public void operation() {

Log.d("Implementor", "ImplementorA.operation");

}

}

和public class ImplementorB implements Implementor {    @Override

public void operation() {

Log.d("Implementor", "ImplementorB.operation");

}

}抽象部分 拥有 实现部分的接口对象,抽象部分 中的方法需要调用 实现部分的对象 来实现,该类一般为抽象类。/**

* 抽象部分。

*/public abstract class Abstraction {    /**

* 抽象部分拥有实现部分的接口对象。

*/

private Implementor mImplementor;    /**

* 设置接口对象。

*

* @param implementor 接口对象。

*/

public void setImplementor(Implementor implementor) {        this.mImplementor = implementor;

}    /**

* 获取接口对象。

*

* @return 接口对象。

*/

public Implementor getImplementor() {        return mImplementor;

}    /**

* 调用接口对象的方法来完成操作。

*/

protected void operation() {        if (mImplementor != null) {

mImplementor.operation();

}

}

}优化的抽象部分,即抽象部分的实现类。/**

* 抽象部分的具体实现。

*/public class RefinedAbstraction extends Abstraction {    @Override

protected void operation() {

getImplementor().operation();

}

}

1.3 应用场景如果一个系统需要在构建的 抽象化角色 和 具体化角色 之间增加更多的灵活性,避免在两个层次之间建立静态的 继承联系,可以通过桥接模式使他们在抽象层建立一个 关联关系。

那些不希望使用继承或因为多层次继承导致系统类的个数极具增加的系统。

一个类存在 两个独立变化的维度,而这两个维度都需要进行扩展。

二、Android 源码应用

2.1 Window 体系

在 Framework 源码解析知识梳理(2) - 应用进程与 WMS 的通信实现 一文中,我们介绍了应用进程与WMS的通信模式,它其实就是桥接模式的一个体现,其架构体系图如下所示:

AAffA0nNPuCLAAAAAElFTkSuQmCC

Window 体系的桥接模式

对应的映射关系为:

Window-> Abstraction

PhoneWindow -> RefinedAbstraction

WindowManager -> Implementor

WindowManagerImpl -> ImplementorA/ImplementorB

2.2 Adapter 体系

AAffA0nNPuCLAAAAAElFTkSuQmCC

Adapter 体系的桥接模式

三、项目应用场景

3.1 列表加载案例

依照惯例,举一个在实际项目中用到桥接模式的例子,这是我们项目中用于处理 图片列表预加载 的代码,我们定义了两个AsyncListView

AsyncLoader

业务场景是这样的:当列表滚动的时候,需要根据列表当前展示Item的可见区域进行计算,对于区域外满足条件的Item分别进行不同的处理:可见范围内:发起请求,优先级为高

可见范围内,加载范围内:发起请求,优先级为低

加载范围外,缓存范围内:取消请求,但不缓存请求

缓存范围外:清除缓存

AAffA0nNPuCLAAAAAElFTkSuQmCC

业务模型

这里我们就会出现两个维度:负责计算可视区域的AsyncListView,其实现类有可能是ListView、RecyclerView、GridView。

负责加载数据的AsyncLoader,其实现类有可能是RecyclerView.Adapter、BaseAdapter等。

这时候就需要桥接模式,将这两个维度嫁接起来,架构图如下所示:

AAffA0nNPuCLAAAAAElFTkSuQmCC

架构图

这里的抽象部分就是AsyncListView,它拥有实现部分的接口对象AsyncLoader:抽象部分AsyncListView根据可见范围,计算出各种请求的Position,通过其内部持有的实现部分的接口对象AsyncLoader#onWindowSliding进行通知。

实现部分AsyncLoader收到通知后,根据Position找到对应的数据,然后发起或者取消请求。

作者:泽毛

链接:https://www.jianshu.com/p/932e6d27accd

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

http://www.wooajung.com/news/33624.html

相关文章:

  • 学校网站建设意义最新疫情新闻100字
  • 网站建设 鸿网络推广外包代理
  • 企业网站优化多少钱在线生成网页网站
  • 网站字体大小选择新闻 最新消息
  • 微信网站开发报价seo网站优化公司
  • 朝阳网站制作公司百度搜索什么关键词排名
  • 怎么在手机上建网站手机如何建立网站
  • wordpress如何做网站线上营销有哪些
  • 公司该建哪种网站常见的网络营销方法有哪些
  • 哪个购物平台质量好价格合适seo咨询服务价格
  • 网站的网络推广方案广州新闻报道
  • 网站公司的未来搜索排名优化策划
  • 免费下载代码项目的网站优书网首页
  • 做造价在那个网站比较好企业网站优化排名
  • 旅游网站建设策划方案书百度精准获客平台
  • 邢台做网站哪家好网推渠道
  • 网站做竞价东莞做网站排名优化推广
  • 自己做个网站好还是做别人会员好营销页面
  • wordpress后台中文沈阳网站关键字优化
  • 动态网站建设步骤界首网站优化公司
  • 做网站总结作文宁波抖音seo搜索优化软件
  • 盐城高端网站制作公司贵州seo推广
  • 江西网站制作公司西安外包网络推广
  • 网站404页面优化小学生班级优化大师
  • 微信官网网站模板河北百度seo关键词排名
  • 小户型室内装修设计公司网站站内营销推广方案
  • jquery 苹果网站网站关键词优化价格
  • iis部署网站提示建设中软文案例
  • 建设网站 无法显示图片热搜榜排名前十
  • 付费的网站推广该怎么做推广网站免费