作者:知乎用户
链接:https://www.zhihu.com/question/31079945/answer/50565711
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/31079945/answer/50565711
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
框架模式有哪些?
MVC、MTV、MVP、CBD、ORM等等;
框架有哪些?
C++语言的QT、MFC、gtk,Java语言的SSH 、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等
设计模式有哪些?
工厂模式、适配器模式、策略模式等等
简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
框架模式有哪些?
MVC、MTV、MVP、CBD、ORM等等;
框架有哪些?
C++语言的QT、MFC、gtk,Java语言的SSH 、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等
设计模式有哪些?
工厂模式、适配器模式、策略模式等等
简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
举例盖房子
盖房子前,开发商都得做调研,我们这个房地产项目,需要在哪儿选址;适合做什么项目;项目都有什么 功能,比如带不带花园,公益场所,游泳池这些;还得考察哪些工程队做过类似项目,项目的实施能力高 ,这样才能承包给他;再有就是后期的物业管理,都需要哪些部门,设什么项目。等等等等。
以上这些,我觉得就是系统架构的内容。做这个项目前,要先了解这个项目,然后做一些选择,什么选择 呢?就是我该怎么做这个项目,采用c/s还是b/s,是j2ee啊还是用微软的体系,服务器用widows还是unix ,是用spring啊,还是只用struts框架,中间件websphere啊还是weblogic,等等等等。别看这些讲起来 空泛,做起来可是很多工作,经验积累对这个工作也很重要。因为你不单单是做单选题,你还要把你的选 择合起来。如果选择不当,不同的jdk版本,都有可能造成项目无法运行。
再说框架。房地产项目承包给了工程队,房地产商说了,我不管你怎么盖房子,但是盖出来的房子,得是
我们要的样子,并且质量要可靠。这些事对工程队来说是小菜一碟,人家整天盖房子,什么样的图纸盖出 什么样的房子,哪些地方拿什么样现成的门和窗户装上,熟得不能再熟了。
对了,框架就是用来具体实现某一功能的工具,框架的部件能够重用,而且某一框架一般都只能解决某一 领域的问题。比如strtus是web框架的实现,如果做b/s项目,用他来实现web层真的不错。但是在c/s项目 里,他就一点儿用处都没有了。
最后是模式。工程队盖房子确实快,但是盖房子的图纸和那些成型的门,窗,楼板框架可不是他们自己整
出来的,他们只管用。有专门的设计人员在做这些事情。这些设计人员整天就想,盖出同样的房子,怎么 样做才能更省材料,怎么做才能更省时间,那些现成的门窗,框架,怎么设计才能实现最大的使用面积,等等。
设计模式是包含在框架里的,就是用科学的方法来实现一个框架的功能。目的就是最大复用,最大功能实现,最方便调用。
盖房子前,开发商都得做调研,我们这个房地产项目,需要在哪儿选址;适合做什么项目;项目都有什么 功能,比如带不带花园,公益场所,游泳池这些;还得考察哪些工程队做过类似项目,项目的实施能力高 ,这样才能承包给他;再有就是后期的物业管理,都需要哪些部门,设什么项目。等等等等。
以上这些,我觉得就是系统架构的内容。做这个项目前,要先了解这个项目,然后做一些选择,什么选择 呢?就是我该怎么做这个项目,采用c/s还是b/s,是j2ee啊还是用微软的体系,服务器用widows还是unix ,是用spring啊,还是只用struts框架,中间件websphere啊还是weblogic,等等等等。别看这些讲起来 空泛,做起来可是很多工作,经验积累对这个工作也很重要。因为你不单单是做单选题,你还要把你的选 择合起来。如果选择不当,不同的jdk版本,都有可能造成项目无法运行。
再说框架。房地产项目承包给了工程队,房地产商说了,我不管你怎么盖房子,但是盖出来的房子,得是
我们要的样子,并且质量要可靠。这些事对工程队来说是小菜一碟,人家整天盖房子,什么样的图纸盖出 什么样的房子,哪些地方拿什么样现成的门和窗户装上,熟得不能再熟了。
对了,框架就是用来具体实现某一功能的工具,框架的部件能够重用,而且某一框架一般都只能解决某一 领域的问题。比如strtus是web框架的实现,如果做b/s项目,用他来实现web层真的不错。但是在c/s项目 里,他就一点儿用处都没有了。
最后是模式。工程队盖房子确实快,但是盖房子的图纸和那些成型的门,窗,楼板框架可不是他们自己整
出来的,他们只管用。有专门的设计人员在做这些事情。这些设计人员整天就想,盖出同样的房子,怎么 样做才能更省材料,怎么做才能更省时间,那些现成的门窗,框架,怎么设计才能实现最大的使用面积,等等。
设计模式是包含在框架里的,就是用科学的方法来实现一个框架的功能。目的就是最大复用,最大功能实现,最方便调用。