设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

函数式语言库模式:框架是魔鬼?:

2015-3-10 22:50| 发布者: joejoe0332| 查看: 2191| 评论: 0|原作者: Tomas Petricek's blog|来自: CSDN

摘要: 本文作者Tomas是F#语言的专家以及导师、计算机科学家,曾出版过有关F#的教程。本文重点介绍了如何设计组合化的库以及如何避免在库设计时进行回调。Tomas倡导以库而不是框架的方式进行开发。以下为译文。 ...

编者按:本文作者Tomas是F#语言的专家以及导师、计算机科学家,曾出版过有关F#的教程。本文重点介绍了如何设计组合化的库以及如何避免在库设计时进行回调。Tomas倡导以库而不是框架的方式进行开发。以下为译文。

框架 VS. 库

框架和库有什么区别呢?两者的主要不同之处在于如何使用它们以及编写什么样的代码。

  • 框架——框架控制了系统的运行,并定义了扩展点 (接口)来让用户进行实施;
  • 库——库把系统运行控制权交给用户,并定义了功能和类型供用户使用。

 

框架和库之间的区别可用上图表示。框架定义了一个结构,你不得不将其填充好;而库则需要你围绕其提供的结构进行编码。

为什么不建议使用框架?

  • 框架是不可组合的

框架最大最显著的弱点是不可组合。如果你正在使用两个框架,这两者之间往往是很难兼容的;谁包含谁,谁是谁的外延也是不清晰的。

如果是库,情况则有所不同。因为你才是决策人,所以能够同时调用不同的库,虽然这会增加一定的编程复杂度,但至少是能够实现的。 

 

  • 难以对框架进行探索

框架另一个大问题是很难进行测试和探索。在F#中,载入一个库并透过不同输入来检查输出和库的运行是很有用的。例如,可以使用Web开发库 Suave来启动一个简单的Web服务器,代码如下:


代码片中首先载入了库,然后以默认方式调用startWebServer。该方式是非常有用的,因为可以让用户尝试不同的参数来对输出结果进行对比。


酷毙

雷人
1

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部