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

重庆双八自助建设网站/百度导航2023年最新版

重庆双八自助建设网站,百度导航2023年最新版,烟台 做网站的公司,网站的建设公司简介一、基本概念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.lbrq.cn/news/1282609.html

相关文章:

  • 怎么做网站赌博/企业品牌策划
  • 四川建设网网网站维护电话/网站快照优化公司
  • 网站的种类/产品推广方案怎么做
  • 网站建设中 模版/推广软文范例大全500
  • 平面设计软件有哪些可以免费使用/网站搜索优化技巧
  • 一级a做爰片免费网站黄/响应式网站模板的应用
  • 涿州网站建设/唯尚广告联盟平台
  • 做网站是用myecli/源码网
  • 企业网站 seo怎么做/网站网页设计
  • 信誉好的郑州网站建设/百度统计登录
  • 长沙做网站排名/中国关键词官网
  • 龙岩做网站/seo排名的影响因素有哪些
  • 深圳横岗网站建设/南京网络推广公司排名
  • 专门做游戏交易的网站有哪些/代做seo关键词排名
  • 网站如何调用微博/二级域名免费分发
  • 深圳政府网站建设/上海关键词seo
  • 胶州为企业做网站的公司/收录网站
  • 做网站的相关教程/电商平台建设方案
  • 详情页设计的逻辑框架/响应式模版移动优化
  • 电商设计网站培训/seo整站优化哪家专业
  • 影响网站收录的因素/盘多多百度网盘搜索引擎
  • 公关公司网站/软文发稿系统
  • 做网站买过域名之后/福州网站建设方案外包
  • 做网站优化企业/如何搜索关键词
  • 专业建设网站技术/网站seo推广多少钱
  • 淘宝网站的订单管理怎么做/怎么免费注册域名
  • 优秀设计工作室网站/万能导航网
  • 网站建设应具备哪些专业技能/seo研究中心晴天
  • 转运公司网站建设/网站友情链接出售
  • 可以做公司宣传的网站有哪些内容/上海搜索引擎优化公司排名
  • 八股文Kafka学习
  • 零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
  • 变频器实习DAY15
  • 容器化成本优化:K8s资源请求与限制的黄金法则——从资源画像分析到25%成本削减的实战指南
  • S7-1500 与 ET200MP 的组态控制通信(Configuration Control)功能实现详解(下)
  • 在 .NET 中使用 Base64 时容易踩的坑总结