[Chrome]关于面向接口编程的应用

面向接口编程,或者说是面向抽象,是OOP中有效隔离变化的手段,同时要求开发者必须对问题进行有效抽象。Chrome为了兼容AOSP WebView和Chromium Android WebView, 在实现中做了许多的抽象,充分做到了上层只依赖于接口的原则(依赖倒置),可以有效的兼容不同的WebView实现,隔离其内部的变化。

下面即为WebView到Content层的分解。刚开始读Chrome的代码,还没有细致整理,以后慢慢完善。

WebViewFactory是一个顶层类(单例),WebView就是通过它来获取不同的WebViewProvider,即可以创建出不同的WebViewChromium (就是WebView的核心实现。) 这个设计是为了同时兼容AOSP的WebView。如果我们需要提供一个完全不同的WebView实现,就可以实现一个新的WebViewProvider和WebViewChromiumFactoryProvider来完成。

    

Android WebView为了操作不同的WebView实现,将具体的实现再通过WebViewProvider Interface封装,称为WebView的后端(backend)。对于Chromium Android WebView而言,它再通过AwContents与Chromium Content层交互。如果是另外一种WebView实现逻辑就可以在这里分隔开了。如下图:

    

再深入一层, AwContents通过Content API的Java Wrapper类与Content API的Native类进行交互。

到了Content Native层后,除了一部业务逻辑处理,更重要的是和Render的交互。除了使用Delegate/Observer监听之外,自己也提供相同的机制,供上层使用。

转载请注明出处: http://blog.csdn.net/horkychen

时间: 2024-11-10 08:05:02

[Chrome]关于面向接口编程的应用的相关文章

PHP面向接口编程 耦合设计模式

php教程面向接口编程 耦合设计模式 关于接口的理解. 接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离. 我们在一般实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理解的系统设计规范应是所有的定义与实现分离,尽管这可能对系统中的某些情况有点繁烦. 接口的本身反映了系统设计人员对系统的抽象理解. 接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体(abstract class): 第二类是对一个体某一方面的抽象,即形成一个抽象面(inter

通过生活中例子模拟java面向接口编程实例

包括如下接口和类:   举例,比如一台电脑,主板上的PCI插槽就可以理解为现实中的接口 你可你把声卡,显卡,网卡都插在PCI插槽上,而不用担心那个插槽是专门插哪个的 原因是做主板的厂家和做各种卡的厂家都遵守了统一的规定 包括尺寸,排线等等 但是各种卡的内部实现结构是不一样的. 下面具体模拟:   通过生活中例子模拟java面向接口编程实例 package com.test; /** * 定义PCI接口,定义主板PCI插槽规范 * @author yanerkang * */ public int

.NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)

阅读目录: 1.开篇介绍  2.迭代测试.重构(强制性面向接口编程,要求代码具有可测试性) 2.1.面向接口编程的两个设计误区 2.1.1.接口的依赖倒置 2.1.2.接口对实体的抽象  2.2.迭代单元测试.重构(代码可测试) 2.2.1.LINQ表达式对单元测试的影响  1]开篇介绍 最近一段时间结束了一个小项目的开发,觉得有些好东西值得总结与分享,所以花点时间整理成文章: 大多数情况下我们都知道这些概念,面向接口编程是老生常谈的话题了,有几年编程经验的都知道怎么运用:单元测试其实在前几年不

PHP面向接口编程 耦合设计模式 简单范例

复制代码 代码如下: <?php interface js{ function ys($a,$b); } class Af implements js{ function ys($a,$b){ return "加法运算......结果为:".($a+$b); } } class Jf implements js{ function ys($a,$b){ return "减法运算......结果为:".($a-$b); } } class AAf impleme

PHP面向接口编程 耦合设计模式 简单范例_php技巧

复制代码 代码如下: <?php interface js{ function ys($a,$b); } class Af implements js{ function ys($a,$b){ return "加法运算......结果为:".($a+$b); } } class Jf implements js{ function ys($a,$b){ return "减法运算......结果为:".($a-$b); } } class AAf impleme

理解面向接口编程,面向接口编程的优势,以及对系统设计的影响

问题描述 希望各位大神不吝赐教... 解决方案 解决方案二:一个人写代码无所谓,不要接口也可以(当然,某些框架非要你定义接口,这种就没办法)小系统也无所谓,随便写接口这种东西有价值的场景在:大系统,需要多人协作的系统,多人之间工作有交际,需要有调用与被调用的关系,工作开始的时候先把接口定义好,再各自实现,工作效率比较高.某些设计模式里需要用到接口.比如你将系统里的部分可以重用的功能抽取出来,但是这种重用功能里有部分又有不同,那么就可以采用定义接口的方式,把需要自定义的部分暴露出去,公共的部分抽取

《Spring技术内幕》——1.4节Spring的应用场景

1.4 Spring的应用场景 通过介绍Spring架构设计,我们了解到Spring是一个轻量级的框架.在Spring这个一站式的应用平台或框架中,其中的各个模块除了依赖IoC容器和AOP之外,相互之间并没有很强的耦合性.Spring的最终目标是简化应用开发的编程模型.它所提供的服务,可以贯穿应用到整个软件中,从最上层的Web UI到底层的数据操作,到其他企业信息数据的集成,再到各种J2EE服务的使用,等等.这些企业应用服务,Spring都通过其特有的IoC容器和AOP模块实现.在实现过程中,S

Spring框架与AOP思想的研究与应用

摘要 本文对Spring框架中所包含的AOP思想以及事务管理进行了分析,并通过对一个业务对象实现加锁/解锁的操作,说明了动态代理模式的可行性与有效性. 关键词 AOP:横切关注点:控制反转:动态代理 引言 Aspect Oriented Programming(AOP)是近年来计算机技术中比较热门的话题之一.其发展历史从学术领域和研发机构的运用开始,目前流行的Spring应用程序框架将AOP思想融入了整个框架的设计开发与应用当中.使用Spring框架固然给我们的编程带来了好处与便利,但是同时存在

什么是API?如何做到API兼容?如何评估API?

文章描述:本文主要介绍什么是API,以及API兼容的重要性,最终给出方案如何评估API,以及如何做到API兼容. 本文主要介绍什么是API,以及API兼容的重要性,最终给出方案如何评估API,以及如何做到API兼容. What's API? API的全称是application programming interface. 而很多时候,程序开发者仅仅把函数.类的接口做为API的一部分,而忽略了其他重要的编程接口. 事实上,在前端Javscript编程中常见的API包括: 函数.类接口,包括参数,