Firefox OS之系统简介(二)
来源:互联网 发布:北京电信云计算在哪里 编辑:程序博客网 时间:2024/05/09 11:25
上篇文章简单讲解了mozilla的Firefox OS系统简介和Firefox设计准则之一--------------分离界面和实现。本文讲解Firefox设计准则之二------------针对接口编程。
http://blog.csdn.net/rony2012/article/details/7969706 点击打开链接
2. 针对接口编程
Mozilla整个设计是基于组建对象模型(COM)的,而组建对象模型(COM)的主要特点就是针对接口编程。在《设计模式》中,作者把针对接口编程作为设计的首要准则。针对接口编程,把模块的使用者和实现这之间的耦合降到最小,一大到信息隐藏和隔离变化的目的。而且在XPCOM的帮助下,组建可以动态替换或者增加,具有更强的灵活性。其中的角色可以用下图来表示:
工厂(Factory)通常用接口指针来调用接口的实现,这样调用者就不必了解实现者的细节了。然而创建接口的实例时,只有知道接口的实现才能创建接口的实例。这是一个矛盾的情节,如何才能把使用者和实现这完全隔离开就是一个难题。工厂模式(Factory)把接口的实现和创建独立开来了。可以说工厂是针对接口编程的基本条件之一吧。
Mozilla中,每个组件都要实现工厂接口,才能被使用者调用。考虑到实现工厂的代码类似,则Mozilla实现了一个为GenericFactory的通用Factory。在GenericFactory的帮助下,各个组件只要实现了一个简单的结构ComponentInfo就行了。
组件管理器 工厂(Factory)虽然把组件的创建分离了,但使用者与实现这的工厂却又耦合起来了。这样看来,我们似乎又回到了起点,不过这次不一样了,各个组件的Factory都实现了IFactory接口,可以由一个专门的管理器来管理。通过组件名称或ID可以找到组件的Factory,通过接口ID又可以让Factory创建接口的实例。
IDL是接口定义语言(Interface Definition Language)的简称,他在组件对象模型(COM)中也起着重要的作用。在C语言中,我们可以用结构(struct)来描述接口,一个只包含函数指针的结构(struct)可以看做一个接口。在C++中,我们可以用类来描述接口,一个只包含纯虚函数的类可以看作一个接口。既然每种语言都有自己描述接口的方法,为什么还要IDL?这是因为每种语言描述接口的方式不一致,所以才需要一个独立于任何编程语言接口定义语言(IDL)。IDL是一个中间语言,它不能直接被编程语言使用,但在IDL的编译器的支持下,它可以被转换成不同的形式,在多种语言中使用。比如转换成头文件,可以在C/C++中使用,可以转换成类型库,可以在javascript等解释语言中使用。IDL在XPCOM实现语言无关性中,起了不可或缺的作用。
- Firefox OS之系统简介(二)
- Firefox OS之系统简介(一)
- Firefox OS简介
- Firefox OS简介
- Firefox OS简介
- Firefox OS简介
- Firefox OS手机应用开发(二):环境搭建
- Palm OS系统简介
- Firefox OS系统开发者手机抢购一空
- Mozilla Firefox os系统构架详解
- 在Firefox浏览器中完美运行最新版Firefox OS系统
- 在Firefox浏览器中完美运行最新版Firefox OS系统
- Firefox OS Quick Start(Firefox OS快速开始)
- Firefox OS Quick Start(Firefox OS快速开始)
- Firefox os 之跳动的小球
- firefox os 手机开发之设备调用
- Firefox os 游戏开发之中国象棋
- 应用时代,firefox os之死
- 屏蔽home键和返回键盘
- VC实现对剪切板的使用
- 循环的中断
- OpenStack云计算--快速入门2
- 黑马程序员——TCP客户端,服务端介绍
- Firefox OS之系统简介(二)
- MySQL的LAST_INSERT_ID用法
- 如果不是异地
- Eclispe 国际化插件
- Eclipse3.5下的struts2的配置,以及建立第一个struts项目HelloWorld
- QT 读写Xml文件
- 第三部分 OpenStack镜像管理
- java的动态绑定
- log4j 代码