什么是模式?什么是框架?软件为什么要分层?【转】 - ☆星云╭⌒╮的专栏----学会和自己独处思考,和他人交往 - CSDN博客

来源:百度文库 编辑:神马文学网 时间:2024/06/04 03:53:40

 什么是模式?什么是框架?软件为什么要分层?【转】收藏

http://blog.vsharing.com/admin/A35524.html

现在软件设计里到处都是模式,框架。有次朋友问什么是模式?我也在学习中,就我的学习经验,给出以下小结。(注意:个人观点,仅供参考,欢迎指正。)

1.什么是模式?

模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。


2.什么是框架?

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

3.为什么要用模式?

因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。

4.为什么要用框架?

因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。

5.软件为什么要分层?

为了实现"高内聚、低耦合"。把问题划分开来各个解决,易于控制,易于延展,易于分配资源...总之好处很多啦:)。

评论:

如果说架构师是在模型图纸上工作的,那么模型元素必须是实实在在的,正如我们不可能期望抽象派画家来设计高楼大厦,没有实际意义的模型元素,是不可能构筑出软件系统的。迄今为止,绝大部分软件架构师是依赖软件程序员来实现他们的架构意图的,这二者直接的鸿沟是显而易见的。设计模式的出现是为缩短二者之间的鸿沟所做的努力,目的是让架构师和程序员之间有更多的共同语言和规范。尽管设计模式让软件开发效率和质量有一定程度的提升,但是它始终面临一个很明显的局限,那就是人的因素。人虽然在创造性方面有绝对优势,但是在精确性、持久性、效率、质量上是无法比拟机器的。所以我们希望在软件系统构建过程中,人和机器发挥各自的长处,也就是说,让人来扮演架构师的角色,而让机器来扮演程序施工者的角色。事实上,目前已经有了成功的模式了,那就是KCOM商业工程(http://www.kcomsoft.com)企业应用平台所采用的基于设计的全自动化软件工厂模式,采用这种模式,架构师在工具平台所提供的模型图设计环境里做软件系统的设计,设计结果由工具平台自身所带的"软件工厂"自动加工成最终企业应用软件系统。这样的开发模式,能使企业应用软件系统的开发在效率、质量上有了质的提升,从根本上区别于传统的设计模式,因为这里的设计模式已经包含在软件工厂编译器之中了。

发表于 @2010年03月03日 14:27:00 | 评论( 0) | 编辑| 举报| 收藏

旧一篇:AX 2:关于AX 的版本管理 | 新一篇:winform listview 选中一行

查看最新精华文章 请访问博客首页相关文章
架构和框架的关系
近期需要看的书
软件架构,框架和设计模式之间的关系
利用.Net框架开发应用系统 (4)
关于软件架构、设计模式和应用框架的一点看法
构架、框架、设计模式之间的关系简述
软件体系结构(构架)、框架、设计模式之间的关系[xiaobaiqing_baidu博客]
架构、框架、设计模式之间的关系简述
什么是模式?什么是框架?软件为什么要分层?【转】 - ☆星云╭⌒╮的专栏----学会和自己独处思考,和他人交往 - CSDN博客 什么是MACD的顶背离和底背离 - xhbpc的专栏 - CSDN博客 什么是PLL - JasonCao的专栏 - CSDN博客 什么是模式?什么是框架? 什么是模式?什么是框架? 什么是SWOT分析法? - 心如止水--coofucoo的专栏 - CSDN博客 什么是Web 2.0——下一代软件的设计模式和商业模式(上) 程序为什么要模块化 - dadalan的专栏 - CSDN博客 邓小平是怎样思考和回答“什么是社会主义”的? 和自己独处 真棒 软件设计模式(耦合) - LZD_jay的专栏 - CSDN博客 我喜欢的几个投资博客和网站 - 思考,行动,再思考,再总结 - CSDN博客 我喜欢的几个投资博客和网站 - 思考,行动,再思考,再总结 - CSDN博客 设计自动升级软件 - 小肖的专栏 - CSDN博客 要学会和他人相处的30个原则 什么是学会学习?--我的ET博客 什么是学会学习?--我的ET博客 合格的电子工程师需要掌握的知识和技能 - weizi422的专栏 - CSDN博客 合格的电子工程师需要掌握的知识和技能 - weizi422的专栏 - CSDN博客 合格的电子工程师需要掌,jk握的知识和技能 - weizi422的专栏 - CSDN博客 Spring 和struts 整合的三种方式 - 曹映辉的专栏 - CSDN博客 详细解析Java中抽象类和接口的区别 - fpy_061625的专栏 - CSDN博客 c#泛型和反射的设计应用(一) - yutao051的专栏 - CSDN博客 Android:Google的阳谋和Apache Harmony - Kasmile的专栏 - CSDN博客