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

QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分) 本教程详细介绍了如何从零开始配置QMK固件的OLED显示屏,实现个性化键盘显示。首先,文章解释了OLED显示屏的基本概念及其在键盘中的应用,并介绍了I2C和SPI两种通信方式。接着,教程逐步指导用户如何在QMK固件中启用OLED功能,包括在rules.mk中启用OLED、在halconf.h和mcuconf.h中配置I2C功能,以及在config.h中设置I2C和OLED参数。最后,教程展示了如何在keymap.c中编写代码,实现OLED显示内容,并提供了进阶定制功能,如显示当前层信息、按键状态和QMK L 阅读详情

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

毛晓冬 2007-1-26

一、            使用接口机制:

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

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

 

二、            使用工厂模式:

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

 

三、            使用CLSID,Interface ID:

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

 

四、            QueryInterface机制:

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

 

五、            引用计数:

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

 

六、            内存自动回收:

借鉴了Java中的自动垃圾回收。BREW中,当一个Module的所有App,Extensions 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_Dispatch,App向BREW注册HandleEvent。当Task允许BREW执行时,会调用AEE_Dispatch,此时BREW再将消息分发到App的HandleEvent。具体可以参考笔者的 《BREW Vs Windows》

 

八、            Hook机制:

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

 

九、            Register Notify,BUIW Model<->Listener:

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

 

十、            BUIW整体架构:

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

 

十一、    Container:

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

 

十二、    AdaptGet,AdaptSet:

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

 

十三、    Decorator:

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

 

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

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

 

十五、    Register Handler,GetHandler机制:

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

华为OD机试 - 字符串筛选排序 - 数组(Python/JS/C/C++ 双机位C卷 100分) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引。输入一个由N个大小写字母组成的字符串,按照ASCII码值从小到大进行排序,查找字符串中第K个最小ASCII码值的字母(k>=1)。k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果有重复字母则输出字母的最小位置索引。输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引。第二行输入k ,k必须大于0 ,k可以大于输入字符串的长度。 阅读详情

相关推荐

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 930

macOS系统和Windows系统的功能键的对应关系

Alt 键 对应 Option 键 Command 键 对应 Windows 标志键 Control 键 对应 Ctrl 键

WinstonLau的博客 2664

6-3 根据派生类写出基类(Java解法)(PTA)

主要是看main函数里调用了什么方法和输出样例,一一对应一下有思路再写就很简单.建议使用IDEA自动生成,可以少写很多代码。

u012137663的博客 1141

IPC(进程间通信),Remote Call(远程调用),IDL(接口描述语言)架构及其在BMP(BREW移动平台),Android中的应用浅析

<br /><br />由于本人才初识BMP和Android,所以仅仅是自己的一些肤浅认识,难免有错误,欢迎指正。<br /> <br />首先我们看IPC,现代操作系统都是多进程,多线程的。进程间存在地址边界,无法直接跨越。所以,两个进程间无法进行直接的请求,传递和调用。IPC是操作系统内核提供的一种跨进程的机制,允许两个进程间使用IPC来传递数据。 虽然某些情况下我们可以将Service直接加载到自己的进程中调用服务,此时可以进行简单的本地调用(Local Call),但是,从安全,性能和共享的角度出发

东方欲晓的专栏 3749

QWEN 2.5模型结构解析与代码解读

对Qwen2.5大模型的代码进行研究

4362

Matlab+Matpower实战:手把手教你生成IEEE14节点FDIA攻击数据集(附完整代码)

本文提供了一份基于Matlab与Matpower工具构建IEEE14节点FDIA攻击数据集的完整实战指南。通过动态负荷数据模拟、潮流计算、状态估计及隐蔽攻击向量注入,手把手教你生成可用于电力系统网络安全研究的仿真数据集,并附有核心代码与调试技巧。

bean的博客 397

BREW Notify机制使用注意点

<br /><br />BREW Notify机制使用注意点<br />毛晓冬<br />2007-10-12<br />一、注册Notify的注意点:<br />       a. 注册方式:<br />BREW中有两种注册Notify的方式,一种是在MIF文件中Add Notification,一种是在代码中通过调用ISHELL_RegisterNotify来显式的注册Notify。MIF文件中注册的Notify,从BREW初始化后就开始生效,所以从此刻开始,App就可以收到Notification,即

东方欲晓的专栏 1626

把外部系统一键装进 SAP Build Work Zone:从零开始创建 HTML5 URL App

HTML5 URL App 是一种轻量级解决方案,可将外部网页或系统入口快速集成到SAP企业门户中。开发者只需在manifest.json中配置目标URL、导航模式等参数,无需开发完整前端应用。该方案利用SAP BTP的HTML5 Application Repository集中存储静态资源,通过HTML5 Apps Content Provider将应用暴露给子账号,最终在SAP Build Work Zone中以Fiori磁贴形式呈现。文章详细介绍了manifest.json的关键配置、三种基础设施组件

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 240

比较BMP和Android的RPC机制

RPC机制是现代系统的重要的一种机制,和IPC有关,却又没有必然关系。 RPC是更广义的,更高层的,为解决异构/非本地对象/过程调用而形成的一套解决方案,其目的重在解决如何让远程对象/过程的访问可以如同本地对象/过程那般,将真正的差异性向上层客户隐藏。   而IPC仅仅是

东方欲晓的专栏 1502

Android15音频进阶之AudioReach架构agmcap bringup调试(一百二十三)

本篇目的:Android15音频进阶之AudioReach架构agmcap录音调试。

Android系统攻城狮 2228

应用商店评论分析实战:Python逆向工程破解Google Play加密接口与NLP建模

在移动互联网时代,应用商店中的用户评论成为了开发者优化应用、提升用户体验的重要依据。然而,Google Play等应用商店对评论数据进行了加密处理,直接爬取难度较大。本文将介绍如何使用Python逆向工程破解Google Play的加密接口,实现对应用商店评论的实时采集,并结合NLP(自然语言处理)技术进行情感分析和主题建模,为开发者提供有价值的数据支持。

u014481728的博客 1347

BREW与面向对象的比较

<br /><br />BREW与面向对象的比较<br />毛晓冬2007-6-13<br />一、    概述:<br />虽然BREW的整体框架是基于接口体系,是面向对象的。但是和C++,C#,Java不同,这些语言的面向对象是语言(编译器)层次上的支持,而BREW的面向对象是实现层次上的支持(BREW的框架是以纯C实现面向对象的体系)。由于支持的层次不一样,所以仍然存在着很大的差异性。<br />我们有必要了解这些差异性,不能直接拿传统面向对象语言的特性来同等的看待BREW,那样有时可能存在偏差,可

东方欲晓的专栏 1359

使用Qt和MX Component插件实现与菱PLC的通信

在本文中,我们介绍了如何使用Qt和MX Component插件实现与菱PLC的通信。我们首先安装和配置了MX Component插件,并在Qt项目中初始化和使用MX Component来连接、读取和写入PLC的数据。安装完成后,您需要在Qt项目中配置MX Component的路径,以便Qt可以找到所需的库文件。在本文中,我们将探讨如何使用Qt和MX Component插件来实现与菱PLC的通信。在主函数中,我们将初始化MX Component,并创建一个与PLC通信的示例。在上面的代码中,我们使用了。

TlScratch的博客 995

BREW(包括BUIW)引用计数及内存使用规则

<br /><br />BREW(包括BUIW)引用计数及内存使用规则<br />毛晓冬2007-1-26<br /> <br />一、概述:<br />BREW使用COM的引用计数机制在多个客户间同时共享一个接口的实例,保证各个客户在使用期间,该接口实例始终有效,而不管其他客户是否已经使用完该接口实例。只有当所有客户都结束使用时,该接口的实例才会被释放。<br />该机制使得我们必须正确操作接口的引用计数,否则会造成内存泄漏,或者重复释放等严重问题。<br />所以,我们需要掌握引用计数的使用规则和注意点

东方欲晓的专栏 1280

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

BREW和Android的安全思想

<br /><br />理论上,所有的公众(公开)实体,都需要安全机制保障, 比如网络。 从分层角度而言,每一层都可以进行安全保护,比如网络协议中的IpSec(Ip层), SSL(传输层), sMIME(应用层)安全协议。 对于移动平台也不例外, 也可以在不同的层次进行安全保障,系统底层和框架上层。<br /> <br />对于BREW平台,一直就是非智能的平台,所以它对底层系统的奢求不是那么高,无需任何现代操作系统的支持。 所以, BREW也就不能对系统层的安全做任何奢求,那么只能完全在BREW这一层实现

东方欲晓的专栏 1159

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

爱之深,期之切, 历数BREW几宗“罪”

本文不是敌人之间的奚落,谩骂。是爱人之间的激励。 那种感觉,是“只允许我1天骂他8次,却容不得别人说他一次不好”。那是因为爱她,所以希望她更好,走的更远。 所以,冒昧的写下本文,提出一些个人感觉BREW有待改进,完善的地方。1。 过于封闭,技术资源匮乏。      对于BREW,除了来自官方的SDK外,似乎找不到任何权威的技术资料和文档。1年,2年,3年过去了,还是这样。 看看后起之秀, IPhone,Android, 不管是来自民间的,还是来自官方,权威的资料,书籍,比比皆是,不管是深入的,还是浅出的。

东方欲晓的专栏 1131

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

BREW你问我答

发布该贴的唯一目的是尽我绵薄之力,在我有限的知识范围和能力范围内,解答部分网友brew方面的问题。有任何brew相关问题的TX,都可以在该贴的评论处提问,只要我能力范围内的,我将尽力解答。 闲话不多了,有问题的可以提。

东方欲晓的专栏 1068

BREW与Android中的UI事件框架比较

对于BREW,我非常熟悉,但是对于Android,只能算刚刚认识,最近看了些Android的UI事件处理的相关文档,发现Android的UI事件处理框架与BREW有一些异同,这里给予一些比较,纯属个人认识。 如有不当之处,欢迎指正。相同之处在于,从高层而言,Android与BREW的UI事件框架均是基于职责链模式的,运行时构成了Event Chain。 Event Chain中的每一个部件默认将事件传递给后继者。 事件在Event Chain的终点处自然终止, 或者在中间异常终止(中间部件返回了TRUE,导

东方欲晓的专栏 1010

【BREW你问我答】02期_20100709

为了使得BREW你问我答办的更好,决定不再在一个帖子中靠不断的回复来问答,这样多了后比较乱。 以后,基本上每周我会更新一期, 大家每次的新问题,请都在最新期的BREW你问我答(会置顶)中提问。 我一般只会关注最新期的问题。  当然,对于老问题的继续探讨,可以在原先的提问的基础上再提问谢谢~~~~~新的问题请在本帖子下开始提问

东方欲晓的专栏 1002

More Than BREW: 解析BREW核心机制

More Than BREW: 解析BREW核心机制 的提纲

东方欲晓的专栏 991

移动平台中的模块复用

在“复用”这一角度,无疑android是最棒的,至少到目前尚无平台可以出其右。 当然,我相信android的思想也不是一蹴而就的,也是借鉴并发展了前人的思想。 我们慢慢看来:     1. 首先,在Windows等PC平台上,最常见的复用的粒度 是基于 “进程”的复

东方欲晓的专栏 977

CS(Component Service), BMP(Brew Mobile Platform)那点事

<br />大家知道Qualcomm最新的BREW版本为BMP,BMP又是基于CS的,那么为何要演进到BMP,以及BMP为何需要基于CS那,其实,这个还是有一个背景的, 本文主要就笔者的观点,谈谈我所认为的背景。<br /> <br /> <br />BREW从1.0一直发展到3.x,一直充当着Feature Phone中的平民英雄的角色, 它的优点,就是可以不依赖于(不奢望)底层平台/系统的现代特性(多进程,多线程,内存保护,动态链接,动态加载等)而依靠自身实现一个轻量级的应用框架,同时支持动态加载。 所

东方欲晓的专栏 962

Android, BREW中Observer(观察者)模式的两种表现

Observer模式无疑是最伟大的设计模式之一。 她被用来解耦一对多的关系,并对“多”的变化进行隔离。 现代移动平台中,各是随处可见她的身影。 本文将从Android,BREW两个移动平台中,一窥其迷人身姿。Listener机制。 在BREW和Android中,同时都提供了Listener机制。这是血统纯正的Observer模式体现。 BREW中的IModel的AddListener和Android中的View的AddXXXListener就是两个很好的例子。 在这种纯种Observer模式下,我们需要明确

东方欲晓的专栏 901

BREW事件使用技巧: 避免事件冲突

详述了BREW中事件定义的注意点

东方欲晓的专栏 901

怎样设计一个好架构:八个评价维度、四层思考深度,以及 23 种设计模式各自解决什么问题

架构要解决的是变化、理解、故障和协作的成本。本文从耦合、可迁移、可适配、复杂度等八个维度讲怎么评价架构,讲维度之间怎么取舍、架构思考可以分几层,再用可编译的 C 代码过一遍 23 种设计模式。

weixin_52400878的博客 317

工作流 vs 自主 Agent:5 种设计模式与 3 种建模方式详解

本文基于 Anthropic《Building Effective Agents》指南,系统梳理了AI应用中的两类核心架构:Workflow(编排式)与Agent(自主智能体)。强调“能画流程图就不上Agent”,提出从简单提示链到复杂自主决策的5种可组合工作流模式,并给出选型口诀与工程实践建议。核心观点:优先用确定性、可审计的Workflow,仅在任务路径未知时启用Agent,避免盲目复杂化。

分享大数据、java相关的技术 153
上一篇: 龙道
下一篇: BREW与Android中的UI事件框架比较
nicefuture
博客等级 码龄23年 75粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值