看了廖大的《设计模式,框架,架构》http://www.dualface.com/blog/?p=546
感觉受益良多,下面我打算用一个比方来诠释我的理解
我类比的例子是盖房子,我先从设计模式说起。人类从住山洞到现在的住高楼大厦中间的居住形态经历了无数次的演变,不同的
人用自己的智慧诠释了对居住环境的理解,并且由于有了文字这些经验都被记录下来了。现在打个比方,如果让学计算机的你在一个深
山老林里,什么都不给你,你能盖出什么样的房子呢?我猜肯定是什么也盖不出来,只能去睡山洞了,为什么呢,因为你什么都没有,没有材料
,没有工具,甚至没有盖房子的知识,这时有另一个答案,如果你足够长寿,你也可以自己把所有盖房子要用到的材料,工具,知识都发明出来
。这里提到的材料,工具,知识,都是前人不断积累而成的,我想这些当中的每一项,每一项个具体的点都是为了解决实际盖房子过程
中遇到的各种问题而产生的。我认为这个就可以解释编程当中的设计模式,当然要注意到我打的比方当中与编程的背景是不同的,说不通的地方
肯定是有的,但不要太钻牛角尖。设计模式,就是一种设计思想,是解决问题的思路,当你以后遇到其他类似问题(想想,当你盖好第一个房子
以后,再让你盖一个,你是不是就有思路了?),你可以采用类似的思路(设计模式)来解决。再说说什么是架构,盖房子的时候,你
再盖之前,先要想想怎么盖,盖成什么样子的,还有会影响你盖房子的一些因素,例如四季的温度,房子的朝向,房子的位置等等,总之在综合
考虑各种因素的影响下,最终你知道这个房子应该大概是个什么样子了,给你纸笔你都可以把房子的大概样子给画出来。那么恭喜你,你的房子
的架构确定了。在开发一个项目的时候,当你综合考虑各种因素后,确定的项目的样子就是架构。那么什么是框架呢,还是说盖房子,
会盖房子的人很多,但有的人特别会盖某种房子,例如2层小楼,于是他就创业了,专门为想盖2层小楼的人提供方法,各种规范化的材料和工具
,这个人在创业的过程中,又不断的发展自己的理论,于是他又能盖高楼和欧式建筑,甚至金字塔了,但你要想建那种建筑,必须得用他提供的
方法,按照他的建筑规范,用它的材料和工具,才能建的成,如果你用他的方法,别人的材料和工具,那这个房子就有可能坏掉。这里,可以说
,这个人他提供给你的就是一种盖房子的框架。同理,如果你要开发个程序,在一个优秀开发框架的帮助下,你就可以少走很多弯路。
框架的类比还没完,假如你什么框架都不用,你自己会盖房子的基本原理,你也能把房子盖起来,但就是没别人盖的好看,盖的快,门也是手工
制的,很粗糙,而且盖的时候还经常遇到不明白的地方,然后你到处找资料,最后弄懂了,问题才得以解决。那么回过头来想想,为什么你用框
架的时候有些问题就遇不到,那是因为框架再代替你做很多事情,框架解决了怎样盖房子的问题,而只让你去考虑盖个什么样的房子的问题。(
这就是开发框架追求的,集中考虑业务逻辑的类比)。框架和设计模式有什么关系呢,正像前面所说的,框架是解决怎么样盖房子,而
你仍然要解决盖个什么样的房子,这实际上是将一件事分成的两个阶段,第一个阶段是聪明的人从盖房子的过程中总结抽象出来的一种普遍使用
的理论,从而提高了盖房子的效率,降低了盖房子的难度。而解决如何盖房子的问题的时候,这就像是在解决一类问题,而具体盖房子就像是一
个实例,实际上他们在形成过程中有类似的地方,都会遇到问题,而遇到问题时就都会运用一些设计模式加以解决。只有知道怎么盖房
子,考虑盖什么样的房子才是合理的做法,同样,只有熟悉各种设计模式,才能研究说更多更好的盖房子的方法。这里面有个知识演变的过程。
正像你开发一个项目时,你先要知道怎么开发项目,怎么用开发框架来开发项目(不要问为什么用开发框架了,前面的盖房子的论述中有提到)
,而这个开发框架在形成过程中必然要用到各种设计模式。但在开发具体的项目的时候,设计模式还是会被用到的,这一方面是框架的原因,另
一方面是设计模式本身的性质决定的。所以设计模式应该是贯穿开发过程始终的,编码级的思想理论。这时再谈到框架,我想框架就是编码级的
方法论,而架构就是项目级的设计理论。最后再谈谈类库和框架的关系,大家都知道面向对象的开发框架中都有各种类库,很多都功能
类似,又有不同的差别,这个可以打个和盖房子有点关系的理论,比如门,有许多种,每种都是用不同的方式批量生产出来的。为了提高盖房子
的效率,降低难度,我会从各种门中找出符合我要求的门,或者说生产这种门的方法,将这种方法纳入我提出的这种盖房子理论的体系中来,这
种生产门的方法,就是一种类库,生产其他门的方法是其他的类库,另外还有生产窗的,灯的,锁的等等,等等。从中不难看出类库和
框架的关系,可以说类库的结合体就组成了一种框架。但之所以说是框架,而不是类库的结合体,就是因为他们是有机的结合体,这个有机说的
是一种机制,一种思想,是框架的核心。类库和设计模式的关系就很简单了,类库的实现过程中是直接应用了各种设计模式的。因此按
照从小到大的顺序我们排列一下标题提到的这四个名词,就是:设计模式,类库,框架,架构。如果从作用来讲,是个三角形或者V
字形的顺序,文字描述为,类库会用到设计模式,框架会用到类库,架构会用到框架,架构定了,开始做项目的时候还会编写类,还会用到设计
模式最后再延伸一点,我认为这四个词是站在编码角度在论述的,另一个角度就是项目的角度,同样也有几个词,从小到大依次是,方
法,过程,工程,管理。简单说一下这四个词背后所代表的概念。方法,例如TDD,BDD,MDD,DDD,OOP/OOA,AOP等等过程,例
如Scrum,敏捷开发,极限开发,瀑布工程,例如需求,设计,编码,测试,维护管理,例如生命周期,里程碑,跟踪,报表,成本核算
,绩效考核等等
也谈设计模式,架构,框架和类库的区别
时间: 2024-10-12 21:21:56
也谈设计模式,架构,框架和类库的区别的相关文章
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.
框架与类库的区别(转载)
发现一片不错的文章,内容全是转载. 一起来看吧. ********************** 框架和类库等概念的出现都是源于人们对复用的渴望.“不要重复发明轮子”,成了软件界的一句经典名言.从最初的单个函数源代码的复用,到面向对象中类的复用(通常以类库的形式体现),再到基于组件编程中二进制组件(.NET中是以IL程序集形式存在的)的复用,人们复用软件的抽象层次越来越高.现在,框架复用是抽象层次的又一提升,框架的复用不仅仅是功能的复用,更是设计的复用. 1.1 框架与类库的区别 我们先来简单说说
软件框架和类库的区别
本文源自<.NET通信框架的设计.实现与应用>书稿第一章内容 类库是一些类的集合,只要我们将一些可以复用的类集中放到一个Library中,我们就可以称其为一个类库. 类库中的许多元素(如类.结构.接口.枚举.委托等)之间可能有一些关联,但这些关联通常用于支持一个类概念或接口概念的完整表达. 如果我们从一个更高的视角来审视类库,可以发现类库中的一个个"完整的概念"之间是无关的或是关系松散的. 再来说框架,框架的第一含义是一个骨架,它封装了某领域内处理流程的控制逻辑,所以我们经
java设计模式、框架、架构、平台之间的关系
设计模式<框架<架构<平台,从复用角度讲,设计模式是代码级复用.框架是模块级复用.架构是系统级复用.平台是企业应用级复用. 1.设计模式 为什么要先说设计模式?因为设计模式在这些概念中是最基本的,而且也比较简单.那么什么是设计模式呢?说的直白点,设计模式就是告诉你针对特定问题如何组织类.对象和接口之间的关系,是前人总结的经验.比如我要在代码中实现一个全局唯一的配置类,那么就使用Singleton模式.设计模式在实际编码工作和设计框架时会被使用到,而更高层的架构和平台则不会太关注它
jQuery 为什么优秀兼谈库与框架的设计[转]
文章转自:https://github.com/lifesinger/blog/issues/114 从 @wintercn 的这篇文章说起:从 jQuery 谈库与框架的设计之优劣 先去读一读哦,不长的,winter 写得很幽默. 好了,看下文. 解决什么问题 拿 winter 的代码入手: function traversal(node, f) { f(node); if(node.children.length) { for(var i = 0; i<node.children.lengt
【转】2017年前端框架、类库、工具大比拼
原文链接:https://www.sitepoint.com/top-javascript-frameworks-libraries-tools-use/ 源于:葡萄城控件 欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ 相比于JavaScript开发人员的数量,目前JavaScript框架.类库和工具的数量似乎更多一些.截至2017年5月,GitHub上的快速搜索显示,有超过110万个JavaScript项目.npmjs.org有50万个可用的软件包,每月下载量近100
2017年前端框架、类库、工具大比拼
相比于JavaScript开发人员的数量,目前JavaScript框架.类库和工具的数量似乎更多一些.截至2017年5月,GitHub上的快速搜索显示,有超过110万个JavaScript项目.npmjs.org有50万个可用的软件包,每月下载量近100亿次. 本文将会讨论目前最为流行的客户端JavaScript框架.类库和工具以及它们之间的基本差异.也许本文无法告诉你哪个是最好的,但是最适合自己项目的,就是最好的. 类库 类库是一个有组织的功能集合.典型的类库包括字符串处理.日期.HTML D
浅谈三层架构(2)
感受: 对于三层的学习,自己刚开始的感觉真的是一头雾水啊,当时真的出现了很烦躁的感觉,我想这种感觉的出现真的是很可怕的,就这样耽误了两天,在网上也搜寻者自己想要的资料,昨天四姐也好心给调试了一番,顿时把自己的大脑打通了,其实问题难不难,就在于能不能打开思路了! VB.NET的三层实现: 上篇文章主要是对于三层有了一个表面的理解,下面针对机房收费登陆界面来进行一下简单的理解: UI层主要就是表面的构建,多以需要使用windows窗体来完成,而其他BLL和DAL则不需要,之间建立一个类库则可以完成自
浅谈MVC架构—你到底有什么本事
一.什么是MVC 1.概念 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 小编点睛:MVC就是类似三层的一种架构,主要还是采用封装(分层)的思想,来降低耦合