组件复用——组合器
来源:互联网 发布:淘宝怎么会封号 编辑:程序博客网 时间:2024/06/14 06:51
- 组件模型概述
- 面向对象没有带来大规模组件复用的原因
- 组件复用在Scala中的尝试
组件模型概述
从广泛的领域来看,成功的组件模型都依赖于非常简单的基础,这个基础使得组件能够创建、生成更复杂的结构,进而形成适用的高层协议。由此可知在软件领域中,恰当、通用的代码或二进制交互协议是复用组件的基础。如:
- 数字集成电路(IC)用
2n 根信号线与信号总线相连,每个信号线是一个布尔值,取值为开或关。 - 在HTTP组件模型中,服务间通过狭小但定义良好的接口进行交互,相互传输少量有关数据类型的信息,其中关于数据本身格式的规定则非常简单。
面向对象没有带来大规模组件复用的原因
恰当、通用的代码或二进制交互协议是复用组件的基础,但这个基础并没有在面向对象中被建立起来。
在各个面向对象语言社区中,组件的基础单位就是对象(也包含模板)。如对于常见的Customer类,开发者为了满足其具体需求,均会为其创建或制定一个新的标准,由此可知对于复用来说对象还不够底层,因此我们需要比对象更底层的东西。
跨语言、跨进程的标准组件近年才出现(类似CORBA的模型非常复杂),但大部分模型定义了二进制标准,而代码级的标准。受制于“版本地狱“,这使得交互性变得非常脆弱。组件复用方案的失败,不在于选择二进制标准而非代码级标准,而在于所定义的二进制标准太过复杂,导致模型的失败。
组件复用在Scala中的尝试
在Scala中,高阶函数的概念与离散数据中的组合器概念非常接近。对于特定问题,可以将数据和行为分离开来,使用很少的代码将组合器串联起来以完成复杂的功能。而在面向对象中的典型做法则是,将数据和行为绑定在一起,在自定义类中创建所需逻辑的实现。
在Scala中使用高阶函数(组合器)及数据结构来形成组件复用的基础。
参考《Scala程序设计》第二版
阅读全文
0 0
- 组件复用——组合器
- Java界面 SWT基本组件——组合框(Combo)
- Android通过组合组件来提高布局文件代码的复用
- 【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合
- 【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成
- 接口,组合,继承,组件
- 设计模式——组合/聚合复用原则
- React学习笔记—组件复用
- Swing 各种组件组合大全
- 组合复用原则
- 组合复用原则
- 机房—组合查询
- CSS—组合选择器
- 解析Tiles组件的组合与扩展
- 带PopupMenu的Button组合组件
- 解析Tiles组件的组合与扩展
- Boost组件multi_index_container组合查询实例(1)
- 【Android组件学习】ImageSwitcher+Gallery组合用法
- configure/make/make install的作用
- CSU 1811 Tree Intersection(线段树+启发式合并 解法)
- Unable to find Mach task port for process-id 47072: (os/kern) failure (0x5). (please check gdb is c
- 用php实现一个简单的链式操作
- python 打开和存储数据文件
- 组件复用——组合器
- PHP的基础知识
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- 爬虫学习第一天
- css-文字设置
- B树、B+树、B*树
- 上传的文件(图片)在Eclipse中能看到,在浏览器中看不到的解决办法
- Eclipse关联Jar包,仍然无法查看源码
- 查找最小的K个数