一、什么是模式?
模式,即pattern。
其实就是解决某一类问题的方法论。
你把解决某类问题的方法总结归纳到理论高度,那就是模式。
Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。
通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。
模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。
当一个领域逐渐成熟的时候,自然会出现很多模式。
为什么要用模式?
因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。
而且会得到解决问题的最佳办法。
二、什么是框架?
框架,即framework。
其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。
简单说就是使用别人搭好的舞台,你来做表演。
而且,框架一般是成熟的,不断升级的软件。
为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。
在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。
而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。
还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台和高层业务逻辑之间的中间层。
是否框架就可以意味着更好,更快呢?
答案是否定的,和其它任何事物一样,当我们使用框架的时候,一个框架拥有优势也同时也会拥有缺点。
这里常常有些重要的因素你需要提前考虑到。
使用框架的优势:
1. 高效:一些任务可能需要花费你数个小时几百行代码完成,而现在只需要简单几分钟完成。开发变得简单,快速,并且有效
2. 安全:许多的框架都拥有安全的实现。最大的优势在于强大的社区支持。使用者成为了测试人员。如果你发现漏洞或者安全隐患,你可以去框架所在网站报告,让维护的人知道并且解决。
3. 成本:很多框架都是免费,并且开发人员编写代码更快,所以客户成本自然更低
4. 支持:和其它的发布工具类似,框架也有文档支持,团队支持,或者大的社区能迅速帮你解决问题
使用框架的劣势
1. 你学习的是框架,不是语言本身,我相信这是主要的问题。如果你使用框架,自然对于基础其背后的语言会知之甚微,使用jQuery来编程和使用javascript有很大不同。简单来说,会jQuery,不代表你会javascript。
2. 限制,框架的核心不能被修改,意味着如果你使用一个框架,你必须尊重这种限制,并且遵循它要求的方式。你必须找到一个框架满足你的需要。
3. 代码是公开的,因为框架任何人都可以使用,因此对于某些怀有不良目地的人来说也是有效的。他们可以寻找框架的漏洞来对付你。
三、软件为什么要分层?
为了实现“高内聚、低耦合”。
把问题划分开来各个解决,易于控制,易于延展,易于分配资源。
常见的设计模式有什么?
首先,你要了解的是GOF的《设计模式–可复用面向对象软件的基础》一书,这本书讲了23种主要的模式,包括:抽象工厂、适配器、外观模式等。
还有其他的很多模式,估计有100多种。
软件设计模式太多,就我的理解简单说一下最常见的MVC模式。
MVC模式是1996年由Buschmann提出的:
模型(Model):就是封装数据和所有基于对这些数据的操作。
视图(View):就是封装的是对数据显示,即用户界面。
控制器(Control):就是封装外界作用于模型的操作和对数据流向的控制等。
另外:
RUP(Rational Unified Process)软件统一过程,XP(Extreme Programming)极端编程,这些通常被叫做“过程方法”,是一种软件项目实施过程的方法论,它是针对软件项目的实施过程提出的方法策略,也是另一个角度的模式。
收益匪浅