Topic: 什么是模式?什么是框架?( 转贴)

  Print this page

1.什么是模式?什么是框架?( 转贴) Copy to clipboard
Posted by: carol
Posted on: 2003-06-21 01:05

什么是模式?什么是框架?(简述)


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

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

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

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

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

软件为什么要分层?
为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。

3. 以下所述主要是JAVA,J2EE方面的模式和框架:
常见的设计模式有什么?
首先,你要了解的是GOF的《设计模式--可复用面向对象软件的基础》一书(这个可以说是程序员必备的了),注意:GOF不是一个人,而是指四个人。它的原意是Gangs Of Four,就是“四人帮”,就是指此书的四个作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。这本书讲了23种主要的模式,包括:抽象工厂、适配器、外观模式等。
还有其他的很多模式,估计有100多种。
软件设计模式太多,就我的理解简单说一下最常见的MVC模式。
MVC模式是1996年由Buschmann提出的:
模型(Model):就是封装数据和所有基于对这些数据的操作。
视图(View):就是封装的是对数据显示,即用户界面。
控制器(Control):就是封装外界作用于模型的操作和对数据流向的控制等。

另外:
RUP(Rational Unified Process)软件统一过程,XP(Extreme Programming)极端编程,这些通常被叫做“过程方法”,是一种软件项目实施过程的方法论,它是针对软件项目的实施过程提出的方法策略。也是另一个角度的模式。

4. 常见的JAVA框架有什么?
WAF:
全称:WEB APPLICATION FRAMEWORK
主要应用方面:EJB层,(WEB层也有,但是比较弱)。
主要应用技术:EJB等
出处:http://java.sun.com/blueprints/code/index.html
简述:这是SUN在展示J2EE平台时所用的例子PetStore(宠物商店系统)里面的框架。是SUN蓝皮书例子程序中提出的应用框架。它实现了 MVC和其他良好的设计模式。SUN的网站上有技术资料,最好下载PetStore来研究,WEBLOGIC里自带此系统,源码在bea\weblogic700\samples\server\src\petstore。这是学习了解J2EE的首选框架。
免费。

Struts:
主要应用方面:WEB层。
主要应用技术:JSP,TagLib,JavaBean,XML等
出处:http://jakarta.apache.org/struts/index.html
简述:这是APACHE的开源项目,目前应用很广泛。基于MVC模式,结构很好,基于JSP。Jbuilder8里已经集成了STRUTS1.02的制作。
免费。

简述WAF+STRUTS结合的例子:WEB层用STRUTS,EJB层用WAF:
JSP(TagLib)――>ActionForm――>Action ――>
Event――>EJBAction――>EJB ――>DAO――>Database
JSP(TagLib) (forward) <――Action <――EventResponse<――

Turbine:
主要应用方面:WEB层。
主要应用技术:servlet等
出处:http://jakarta.apache.org/turbine/index.html
简述:这是APACHE的开源项目。基于SERVLET。据说速度比较快,基于service(pluggable implementation可插拔的执行组件)的方式提供各种服务。
免费。

COCOON:
主要应用方面:WEB层。
主要应用技术:XML,XSP,servlet等
出处:http://cocoon.apache.org/2.0/
简述:这是APACHE的一个开源项目。基于XML,基于XSP(通俗地说,XSP是在XML静态文档中加入Java程序段后形成的动态XML文档。)。特点是可以与多种数据源交互,包括文件系统,数据库,LDAP,XML资源库,网络数据源等。
免费。

ECHO:
主要应用方面:WEB层。
主要应用技术:servlet等
出处:http://www.nextapp.com/products/echo/
简述:nextapp公司的一个开源项目。基于SERVLET。页面可以做的很漂亮,结合echopoint,可以作出很多图形效果(里面用了jfreechart包)。使用SWING的思想来作网页,把HTML当作JAVA的类来做。但是大量使用Session,页面分帧(Frame)很多,系统资源消耗很大。
免费。

JATO:
全称:SUN ONE Application Framework
主要应用方面:WEB层。
主要应用技术:JSP,TagLib,JavaBean等
出处:http://www.sun.com
简述:这是SUN推出的一个商业性框架,一看名字就知道是结合SUN ONE的平台推出的。我下载了JATO2.0看了一下,感觉有些简单,使用了JSP+TagLib+JavaBean。如他的DOC所说JATO是适合用在小的WEB应用里。
免费。

TCF:
全称:Thin-Client Framework
主要应用方面:JAVA GUI。
主要应用技术:JAVA application等
出处:http://www.alphaworks.ibm.com/tech/tcf
简述:这是IBM出的一个框架。基于MVC模式,基于JAVA Application。推荐一篇介绍文章:http://www-900.ibm.com/developerWorks/cn/java/j-tcf1/index.shtml
收费:每个企业对象license:2000美元。

5.其实本文的目的在于“抛砖引玉”,希望各路高手请你们把各种框架的特点和出处罗列一下 ,供大家参考,选用。

2.Re:什么是模式?什么是框架?( 转贴) [Re: carol] Copy to clipboard
Posted by: dapan
Posted on: 2003-06-21 07:22

多谢共享,不过
是不是可以编辑一下您的帖子?最后好像有很多没有用的东东?

^_^

3.Re:什么是模式?什么是框架?( 转贴) [Re: carol] Copy to clipboard
Posted by: bluntsword
Posted on: 2003-06-22 20:57

大家认同这里对框架的定义么?

4.Re:什么是模式?什么是框架?( 转贴) [Re: carol] Copy to clipboard
Posted by: feiggle
Posted on: 2003-06-23 14:49

不是怎么抽象,但是便于理解,可以接受!

5.Re:什么是模式?什么是框架?( 转贴) [Re: carol] Copy to clipboard
Posted by: 九佰
Posted on: 2003-06-23 15:10

不准确,而且范围狭隘

6.Re:什么是模式?什么是框架?( 转贴) [Re: 九佰] Copy to clipboard
Posted by: bluntsword
Posted on: 2003-06-23 16:14

九佰 wrote:
不准确,而且范围狭隘


你能给个定义么?

7.Re:什么是模式?什么是框架?( 转贴) [Re: carol] Copy to clipboard
Posted by: floater
Posted on: 2003-06-24 02:21



Object-Oriented Application Frameworks.htm (34.94k)

8.Another ref [Re: carol] Copy to clipboard
Posted by: floater
Posted on: 2003-06-24 02:22



Designing Reusable Classes.htm (73.98k)

9.Re:什么是模式?什么是框架?( 转贴) [Re: carol] Copy to clipboard
Posted by: floater
Posted on: 2003-06-24 02:41

Let's say we have to write 10,000 lines of code. On the one hand, you may put these 10K lines in one big giant file, like in early C era; on the other hand, you may put each line in one file so you have 10K files. These are two extremes on the spectrum. Either one is not good for obvious reasons. So we have to settle somewhere in the middle. design patterns and framework both enforce some rules on this spectrum so we could have reuse/extendibility/encapsulation, but they differ on the scales, design pattern is more of an object level and framework is more of a component level.

I view the following as craps(forgive me for being straight):

2.为什么要用模式?
因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。
Empty statement.
软件为什么要分层?
为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。

高内聚、低耦合 is not the goal!! 易于控制,易于延展 is.

总之好处很多啦 - Yea, right, give me a break!

Within this spectrum, the goal is
easy maintainence(encapsulation, readability, etc)
extendible/flexible(scalable, adaptive, etc)
We may have design pattern, framework today, or something else tomorrow, but this goal is invariant in logic. Names are not important, but the essence is.

10.Re:什么是模式?什么是框架?( 转贴) [Re: floater] Copy to clipboard
Posted by: bluntsword
Posted on: 2003-06-24 10:34

I like this saying:

Frameworks are active and exhibit ``inversion of control'' at run-time 

11.Re:什么是模式?什么是框架?( 转贴) [Re: carol] Copy to clipboard
Posted by: jbwang
Posted on: 2003-07-03 18:53

oracle的BC4J也可以算吧

小用了一下,觉得速度还可以,结合jdeveloper开发,也很方便

主要是web或者swing(通称client端)对数据库访问。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923