浅谈BREW对面向对象,Windows,Java,设计模式的借鉴

浅谈BREW对面向对象,WindowsJava,设计模式的借鉴

毛晓冬 2007-1-26

一、            使用接口机制:

借鉴了面向对象的接口,类封装服务。BREWApp提供的所有服务以接口体系存在。客户需要使用服务时,首先请求BREW创建类的实体,并得到对应的接口实例。然后才能使用接口的服务。

使用接口体系,在C中模拟了面向对象。封装了变化点,使得接口与实现得以分离,迎合了动态加载的必然要求。同时也是面向对象和设计模式的总体思想。

 

二、            使用工厂模式:

借鉴了设计模式中的工厂模式。封装了类实体的创建过程,向客户彻底屏蔽类的具体实现,达到接口与实现的分离。BREW中,具体的类,接口实例的创建,都是通过Ishell这个工厂创建的,只需要传入ClsId表征具体需要创建的是哪个对象。

 

三、            使用CLSIDInterface ID

借鉴了COM中的GUID,用来唯一的标识具体的类和接口,从而请求创建或者查询。

 

四、            QueryInterface机制:

借鉴了COM中的QueryInterface机制,可以通过组件的一个接口查询出另一个接口。在BREW中,可以实现向下兼容的条件下,提供扩展功能。

 

五、            引用计数:

借鉴了COM中的引用计数。允许同一个接口实例,被多个客户同时使用。引用计数可以控制实例的生命周期何时结束,何时释放,保证客户使用时,实例都是有效的。

 

六、            内存自动回收:

借鉴了Java中的自动垃圾回收。BREW中,当一个Module的所有AppExtensions Unload时,BREW可以自动的检查出,有哪些在App环境下申请的内存没有被释放,此时BREW会自动释放,回收。实现基本原理是,在一个Module的环境下运行的任何App,申请的内存Node,都会自动关联上Module ID,这样,当Module Unload时,BREW可以检查出哪些内存Node还没有被释放。

 

七、            事件驱动,消息循环:

借鉴了Windows的事件驱动和消息循环。Windows中,App需要向Windows注册WindowProc,即所谓的窗口过程。Windows有消息发给该App时,就会调用这个窗口过程,在窗口过程中,App进行消息分发处理。BREW中,BREW内核向Task注册窗体过程AEE_DispatchAppBREW注册HandleEvent。当Task允许BREW执行时,会调用AEE_Dispatch,此时BREW再将消息分发到AppHandleEvent。具体可以参考笔者的 《BREW Vs Windows

 

八、            Hook机制:

借鉴了Windows中的Hook技术。在Windows中,消息默认分发给当前运行的App,但是可以通过安插鼠标Hook,键盘Hook等,截获事件。BREW中,可以通过注册Key Hook,截获发往Top Visable AppKey Event

 

九、            Register NotifyBUIW Model<->Listener

借鉴了JaveListener机制,或者说设计模式中的Observer模式。使得一个组件可以向另一个组件注册监听,当变化发生时,可以自动通知

 

十、            BUIW整体架构:

借鉴了MVC设计模式,将数据的存储,处理和最终的显示输出强行隔离,通过Controler来进行逻辑调度。在BUIW中,Model对应MVC中的ModelWidget对应MVC中的Viewer+轻量级的Controler

 

十一、    Container

BUIW中的Container借鉴了设计模式中的Composite模式,使得对部分和整体的操作达到一致性。在BUIW中,是通过Container QueryWidget来达到这个目的的

 

十二、    AdaptGetAdaptSet

BUIW中,ValueModelAdaptGetAdaptSet功能借鉴了设计模式中的Adaptor模式。主要作用是,当一个组件的接口不满足客户的接口规格,而客户又想使用时,可以通过一个Adaptor(适配器)来达到自动适配。

 

十三、    Decorator

BUIW中的Decorator,借鉴了设计模式中的Decorator模式,主要作用是,对单独的一个组件,进行外观,行为上的修饰。

 

十四、    IMedia,IImage等抽象接口:

借鉴了面向对象中的多态,使得具体媒体格式的Class,都继承至ImediaIimage这两个抽象接口。对上层是统一的接口表现,在运行时,多态的调用具体媒体格式Class的接口。

 

十五、    Register HandlerGetHandler机制:

借鉴了Windows中,类型自动关联的机制。当打开一个特定的MIME类型时,Windows可以自动启动特定的程序去处理。在BREW中,同样通过Register Handler可以使得App或者Interface自动和MIME类型关联。当针对特定MIME类型操作时,可以通过GetHandler查询出该MIME类型关联的Class或者App,从而启动App或者创建Class来处理该媒体类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值