面向转换,一种新的或复古的编程思想

最近想到一种新的或者说是复古的编程思想,说复古是Unix的管道思想比较大同,实现上与面向过程也比较类似。而说新的,主要是思想上不同,即非面向过程又非面向对象。

编程很多时候可以理解成数据到数据的转化,为此把思想重点放到数据的转换上,以下就简称为面向转换。

先举一个简单的例子:对于文件进行字频统计并输出。

面向过程:

文本 = 读取文件(文件名)
字频表 = 字频统计(文本)
打印(字频表)

面向对象:

文件Reader = 创建文件Reader(创建文件实例(文件名))
字频表实例 = 创建字频表统计()
字频表实例.更新(文件Reader)
控制台.输出(字频表)

面向转换:

把 文件名 转换成 文本
把 文本   转换成 字频表
打印(字频表)

面向过程比较简单明了,同时注重于过程二字,讲究按步就班。

面向对象注重对象及复用,如字频表更新的Reader输入实际是一个Reader接口,但负作用容易过度设计,常常把简单复杂化。

面向转换比较有规律,从文件名到字频表经过2个转换器转换。打印(字频表) 如果用转换来描述可以是 把 字频表 转换成 输出(控制台),但感觉不如直接打印方便。理解成当数据不需要转换了,在终点进行输出操作,我想也是可以接受的。

面向转换另一个好处,由于转换器之间独立,很容易建立起一个转换器阵列,并通过搜索算法进行快速跨多个转换器的转换。

共2条评论
  1. fuadam1982 @ 2014-09-09 13:17:57 回复

    看起来很像functional reactive programming

    • JiangMiao @ 2014-09-09 17:09:22

      学习了,是有点像。

发表评论

电子邮件地址不会被公开。 必填项已用*标注