atitit.提升研发效率的利器---重型框架与类库的区别与设计原则

1. 框架的意义---设计的复用 1

1.1. 重型框架就是it界的重武器。 1

2. 框架 VS. 库 可视化图形化 1

2.1. 类库 2

2.2. 应用框架 2

2.3. 框架与类库的区别主要表现在以下几个方面: 2

2.4. 框架模式就是参团游,而自由行则类似于库的组合 3

3. 框架的特点 3

3.1.  没有一个万能的框架
3

3.2. 框架是不可组合的 3

3.3. 框架设计的俩个方向::全栈式与精细化 4

4.  框架设计经验、原则 4

4.1. 通用框架与应用框架 4

4.2. 选择框架还是库。。可组合的库 5

5. 参考 5

1. 框架的意义---设计的复用

架和类库等概念的出现都是源于人们对复用的渴望。“不要重复发明轮子”,成了软件界的一句经典名言。

从最初的单个函数源代码的复用,

到面向对象中类的复用 (通常以类库的形式体现),

再到基于组件编程中二进制组件(.NET中是以IL程序集形式存在的)的复用,人们复用软件的抽象层次越来越高。

现在,框架复 用是抽象层次的又一提升,框架的复用不仅仅是功能的复用,更是设计的复用。

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

1.1. 重型框架就是it界的重武器。

2. 框架 VS. 库 可视化图形化

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

· 框架——框架控制了系统的运行,并定义了扩展点 (接口)来让用户进行实施;

· 库——库把系统运行控制权交给用户,并定义了功能和类型供用户使用。

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

2.1. 类库

1.目的:让程序员拿现成类来诞生对象,类并未预留空间给程序员来修正。

2.2. 应用框架

2.应用框架中的类的函数,常调用应用程序中的函数。

3.含有类之间的关系,其预设了对象间的相互合作关系。

4.物件常含预设计行为(Default Behavior),预设行为可让应用程序员修正之。

2.3. 框架与类库的区别主要表现在以下几个方面:

(1)从结构上说,框架内部是高内聚的,而类库内部则是相对松散的。

(2)框架封装了处理流程的控制逻辑,而类库几乎不涉及任何处理流程和控制逻辑。

正是由于框架对处理流程的控制逻辑进行了封装,才使得框架成为一个应用的骨架。框架中的处理流程和控制逻辑需要经过精心的设计,因为所有使用了该框架的应用程序都会复用该设计。

(4)框架专注于特定领域,而类库却是更通用的。

框架着力于一个特定领域的解决方案的完整表达,而类库几乎不针对任何特定领域

(5)

(5)框架通常建立在众多类库的基础之上,而类库一般不会依赖于某框架。

2.4. 框架模式就是参团游,而自由行则类似于库的组合

本文着重从可组合和避免回调方面对库和框架进行比较。进一步说,框架模式不仅存在于软件,在日常生活也是经常遇到的。例如参团游,从一开始,交通、住宿、 游玩行程等都已经被固定了;而自由行则类似于库的组合,任何细节都需要亲力亲为,从而实现全权控制。虽然参团游很方便,但是对于我,特别是软件开发,我还 是更倾向于我的地盘我做主

3. 框架的特点

3.1.  没有一个万能的框架

可以应用于所有种类的领域和应用,框架的目标性非常强,它专注于解决某一特定领域的问题,并致力于为这一特定领域提供通用的解决方案。

3.2. 框架是不可组合的

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

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

3.3. 框架设计的俩个方向::全栈式与精细化

4.  框架设计经验、原则

使用接口,保证框架提供的所有重要实现都是可以被替换的。

(4)提供一个常用的骨架,但是不要固定骨架的结构,使骨架也是可以组装的。

(5)注意平衡,一个框架越来越详细,就会越来越不通用。。

(6)“按需所取”的原则,

弱侵入性的

所谓“弱侵入性”,采用了框架的应用程序可以尽可能的以普通的方式来编写应用逻辑,而不必为了适应框架不得不使用一些特殊的手法。

弱侵入性意味着框架对应用逻辑的干扰更少,由于应用逻辑类都是普通的类,这非常方便应用逻辑在另外一个程序中复用,而另外的程序可能采用了一个完全不同的框架。

4.1. 通用框架与应用框架

如果要对框架进行进一步分类,则可以根据框架针对的领域是否具有通用性而将它们分为通用框架(General Framework)和应用框架(Application Framework)。通用框架可以在不同类型的应用中使用,而应用框架只被使用于某一特定类型的应用中。

比如,ORM框架NHibernate就是一个通用框架,该框架可以用于所有需要解决O/R映射的各种类型的应用中。而某个金融框架则是一个应用框架,它仅仅被用于金融类型的应用中。

(7)

4.2. 选择框架还是库。。可组合的库

· 设计可组合的库

对于库来说,可组合属性是我们选择它而不是框架的原因之一。

5.  参考

函数式语言库模式:框架是魔鬼?-CSDN.NET.htm

框架? - zhuweisky - 博客园.htm

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 14:41:35

atitit.提升研发效率的利器---重型框架与类库的区别与设计原则的相关文章

atitit.提升研发管理的利器---重型框架 框架 类库的区别

atitit.提升研发管理的利器---重型框架 框架 类库的区别 1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 3. 应用框架 1 4. 类库 2 5. 框架是不可组合的 2 6. 框架设计的俩个方向::全栈式与精细化 2 7. 选择框架还是库..可组合的库 3 8. 在最后 3 1. 重型框架就是it界的重武器. 2. 框架 VS. 库 可视化图形化 框架和库有什么区别呢?两者的主要不同之处在于如何使用它们以及编写什么样的代码. · 框架--框架控制了系统的

atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较

atitit.提升开发效率---使用服务器控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比较 如下列举了服务器控件生命周期所要经历的11个阶段. (1)初始化-- --在此阶段中,主要完成两项工作:一.初始化在传入Web请求生命周期内所需的设置:二.跟踪视图状态.首先,页面框架通过默认方式引发Init事件, 并调用OnInit()方法,控件开发人员可以重写该方法为控件提供初始化逻辑.此后,页面框架将调用TrackViewState方法来跟踪视图状态. 需要注意的是:多

atitit.提升开发效率---mda 软件开发方式的革命--(2)

atitit.提升开发效率---mda 软件开发方式的革命--(2) 1. 一个完整的MDA规范包括: 1 2. 一个完整的MDA应用程序包括: 1 3. MDA可以带来的最大的三个优点是什么? 2 4. 三大MDA工具 2 5. 代码补充 3 6. Mda的问题 3 7. EMF与MDA 4 8. MDA跟代码自己主动生成的差别 4 9. openMDX-开源MDA平台 5 10. openMDX 的开发过程 5 11. MDA的两种实现 5 12. 參考 6 1.  一个完整的MDA规范包括

atitit.提升开发效率---mda 软件开发方式的革命

atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MDA的历史及其由来 2 5. MDA的三个主要目标是:轻便性. 互操作性和可重用性. 3 6. MDA跟代码生成的不同 3 7. 问题:也许MDA不过是已有的Case Tools的"昙花一现" 3 8. 实际的效率提升 3 9. Mda在嵌入式系统的成功 4 10. 我的总结:::基于伪码生

atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模

atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模 1. 建模语言的选型anno+html...不是uml 1 2. 指定显示模板 @BeanEditForm(tmplt="c:/edit.html") 1 3. 配置属性的@Property(lable="xxx")显示 2 4. 配置属性的显示控件方式@DataType(value=DataTypeConstants.select,datasource="c:/cate

雷观(十二):构建基础库,提升研发效率

观点:IT之所以迅速普及,进入到每个人的生活.一方面是由于,IT相关技术产品,给每个人带来了丰富的虚拟世界和娱乐生活.另一方面,它大大提升了大部分行业的生产效率.社会生产力的发展方向,就是时代的发展方向.   程序员等IT技术人员,在IT届的地位,就像IT在社会生活中的地位:不可或缺.普遍存在.生产力的关键. 作为一名自学6年多的程序员,对技术的追求从未曾放弃.但我也终究意识到,纯粹的技术无法带我到达理想境界,而生产力的提高才可以把我从繁杂的基础工作中解脱出来,可以把我带向幸福美好的生活中. 与

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为[email protected](displayType = displayType.rang, rangStart = rang.start, rangEnd = rang.end,op=op.range) 1 3. 自定义@Adapter (UI2whereExpress) 2 4. 条件字段排序@ConditionFieldCf

atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表

atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表 1. 建模在后自动建表 1 1. 传统上,需要首先建表,在业务编码.. 1 2. 模型驱动建表---更多简化法是在建模在后自动建表 1 2. 自动建表的原理: 1 3. 自动建表工具::hibernate.hbm2ddl 跟Hibernate4.1 2 4. hbm2ddl最佳实践 2 3. hibernate.hbm2ddl.auto 2 5. Java语句执行 3 6. 使用Ant 执行hbm2ddl 3 7

Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结

Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结 1. 管道抽象 1 2. 层次结构抽象(json,xml etc) 1 3. 异步抽象promise 1 4. Ide  code templete 1 5. 方法链( 流接口.??管道抽象??) 1 6. static factory method)和import 1 7. varargs 1 8. 元编程(anno??) 1 9. 易读API 1 10. 方法链 1 11. 功能序列 1 12. 嵌套函数 2