移动平台中的模块复用

 

在“复用”这一角度,无疑android是最棒的,至少到目前尚无平台可以出其右。 当然,我相信android的思想也不是一蹴而就的,也是借鉴并发展了前人的思想。 我们慢慢看来:

 

 

1. 首先,在Windows等PC平台上,最常见的复用的粒度 是基于 “进程”的复用, 进程的边界是很清晰的。 客户可以显示的复用其他的进程来完成某个功能,比如带命令参数启动一个新的应用程序来完成某件事情,但是,这种模式下,需要熟知你所以欲复用的进程/应用程序的Name以及参数。  另外,也可以隐式的复用,这通常是基于系统的注册,查询功能而实现的。 比如文件后缀。 某些应用程序注册某些文件后缀。 客户程序可以隐式的打开一个文件,此时,系统将自动的查询到该文件类型关联的程序,并启动之。

 

 

2. 在BMP/BREW平台中的复用,是基于逻辑上的Application,因为在BREW/BMP中,application基本上都运行在单一的进程中的单一的线程。 BREW中使用ISHELL_POST/SendURL的方式来隐式的在运行时进行应用级的复用。这里的URL的前缀其实就是Scheme。比如tel,mail,http,file等。 相应的application注册该scheme申明自己有处理该scheme的能力,并且对URL的语义进行定义。 运行时,客户程序可以直接基于PostSendURL的方式向系统抛出一个复用的请求。系统会自动查询得到对应的application,并将其Launch然后投递事件,事件中包含完整的URL。

 

   这里,我们看看BREW/BMP中这种复用的局限性:

 

    1. 只能基于Application Level的复用,粒度仍然太大

    2. 基于URL,可带的信息太少

    3. 框架不支持结果的返回

 

 

 

3. Android发展了上诉的思想,将优点继承,缺点弥补,我们来看看:

 

    在Android中,进程,应用的边界完全模糊化了,只有组件的边界那么清晰,这是应用,Google希望我们基于组件编程。

 

    之所以可以进行基于组件边界,而不需要关心进程,应用的概念,这是应用,android中的运行时复用的粒度被缩小到了组件的级别,这是一个飞跃!!

 

    任何组件间都可以复用,而不仅仅是UI组件,包括Service也可以复用,这又是一个飞跃。

 

    复用其实仍然基于注册和查询,但是为了能带更多的信息,Google不像BREW那样仅仅使用一个URL,而是直接使用一个Intent对象,对象可以带的信息足够多了吧。 将组件的能力抽象成Action,Data , URL, MIME Type, Extra等并封装在Intent内部。

 

    复用是可以带Result的,这又是一个飞跃。

 

    复用是可以跨进程的,并对客户隐藏细节

在Allegro软件中,复用模块通常是以“Replicate”形式创建的,它允许用户将一个模块的设计(包括布局和布线)复制到其他位置或项目中。然而,在某些情况下,用户可能需要对复用模块进行修改、调整或完全解构,以便进行定制化设计。以下是处理复用模块及打散复用模块的方法: ### 解构复用模块的方法 1. **进入Placement Edit模式** 在Allegro PCB Editor中,首先切换到Placement Edit模式。该模式允许对复用模块进行编辑和操作。 2. **选中复用模块** 使用鼠标框选或单击选中需要解构的复用模块区域。 3. **解除复用关系(Unreplicate)** 右键点击选中的模块,在弹出的菜单中选择 **Place Replicate → Unreplicate**。此操作将断开该模块与原始复用定义的关联,使其成为独立的布局对象,可以自由编辑和移动单个元件[^2]。 4. **手动调整布局** 一旦模块被打散,所有元件将恢复为独立对象,可以像普通布局元件一样进行移动、旋转和重新布线。 ### 处理复用模块的其他方法 - **修改复用模块定义** 如果希望保留复用结构但修改其内容,可以在原始模块上进行编辑,然后通过 **Place Replicate → Update** 命令更新所有复用实例,使修改同步到其他模块中[^3]。 - **重新匹配元件** 在复用过程中,如果某些元件未能自动匹配,可在复用应用时手动选择对应元件进行配对。这在模块中存在相似但不完全相同的子电路时尤为有用[^2]。 - **保存为独立模块** 若希望将解构后的模块保存为新的复用模板,可重新框选所需元件,通过 **Place Replicate → Create** 保存为新的模块文件(.psm),供后续项目复用[^1]。 ### 示例代码:使用Skill脚本批量解构复用模块(可选) 如果需要批量处理多个复用模块,可以通过Allegro的Skill脚本语言实现自动化操作。以下是一个简单的Skill脚本示例: ```lisp ; 解构所有选中的复用模块 (axlSetFindFilter ?enabled t ?onButtons "replicate") (axlClearSelSet) (axlSelectAll) (axlReplicateUnreplicate()) ``` 将上述脚本保存为 `.il` 文件,并在Allegro中通过 `Tools → Skill` 加载执行。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值