[collect]框架的作用

=Start=

缘由:

学习提高

正文:

参考解答:

@Intopass

一、首先,到底什么是框架?

①首先从DRY原则开始说起
Don’t Repeat Yourself,不要重复你的代码。

1)最初级的DRY:语法级别
2)进阶的DRY原则:方法级别
3)继续进阶的DRY原则:类型级别
4)继续继续进阶的DRY原则:多个类组合级别

②设计模式,更高层级的DRY应用
设计模式是经过长时间编码之后,经过系统性的总结所提出的针对某一类问题的最佳解决方案,又称之为最佳实践。而在小规模的编码工作中,其实并不需要什么设计模式,只有大型程序才有设计模式发挥的空间,所以我们需要借助一些特定领域有足够规模的问题来了解一下设计模式存在的必要性。

③框架,是设计模式的集大成者,是DRY原则的最高应用

二、那么问题就来了,框架到底是什么?要不要学,怎么学?

下面以JavaWeb开发为例再进行一些说明,并顺便简单介绍一下JavaWeb的一些脉络。

① 静态网页时代
② Servlet时代
③ JSP包打天下的时代
④ Servlet + JSP 时代
⑤ MVC模式时代

一次典型的访问是这样的流程:
1. 用户输入网址或点击链接或提交表单,浏览器发起请求
2. –> 通过互联网,通过HTTP协议 –>
3. Tomcat接受到HTTP请求,生成HttpServletRequest对象,根据Web.xml的配置,调用开发者编写的HttpServlet,HttpServlet根据请求内容,调用JavaBean获取数据,JavaBean从数据库获取数据,返回HttpServlet,HttpServlet将数据转发给JSP,JSP负责将数据渲染为HTML,由Tomcat负责将HTML转化为HTTP响应,返回客户端。
4. –> 通过互联网,通过HTTP协议 –>
5. 客户端浏览器接收到HTTP响应,浏览器将HTML渲染为页面,并运行其中可能存在的JavaScript进一步调整界面。

⑥ JavaWeb框架
⑦ 所以当然要学框架,要用框架,那么要怎么学?
1. 用框架要知其然,还要知其所以然,要大体明白框架实现一个功能特性的原理,不能只是会用,只是觉得很神奇就可以了。就拿前面的Hibernate + Spring声明式事务为例,要弄明白框架这部分是怎么实现的。
2. 首先要夯实你的语言基础,如JavaSE基础,语法掌握,用法掌握,有些同学语法还不熟练就开始学框架,等于地基没打就起高楼,你可能会快一步,但是迟早要遇到瓶颈,甚至摔跟头。
3. 那么何时开始学习框架?我不建议新手一开始就直接使用框架。就好像一开始学习编程语言,大家都不推荐直接使用IDE,一定要用命令行自己编译运行几个文件之后,了解清楚了之后才可以使用IDE,要不然对于底层原理不了解,遇到问题没法自己手动排查。
4. 使用框架也是一样,如果不是自己写多了重复性的代码,就很难理解框架为什么要这么设计。如果不尝试几种不同的实现,就很难理解框架为了灵活性而做出的设计和扩展点。如果不写几十个权限检查语句,就很难理解AOP到底有什么好处。
5. 框架这么好,我该全部使用框架吗?首先只有在规模以上的程序中,才有应用框架的必要,一个简单的程序没必要使用框架,当然如果你很熟练,使用也无所谓。
6. 要学习一下框架的核心源代码,要为扩展框架做好准备,因为虽然框架基本上还算灵活,但是面对错综复杂的业务需求,永远不可能面面俱到,而你不了解框架的话,可能会给你实现业务需求造成麻烦。这也是有些人坚持使用Servlet+JSP原生开发,而不是用框架的理由。
7. 只要程序大了,归根究底还是要使用框架的,不是用别人写好的,就是自己写一套。这里我不建议自己写,不要重复造轮子,总有专业造轮子的。你草草写就的往往不如别人已经千锤百炼的代码。除非你是为了学习与研究的目的,自己写,那就是一件很好的事情。

==

@Harry Zhu、fleuria、pilot

【框架有其自身的适用场景,是瑞士军刀,非妇孺皆宜】
框架可以让你在保证代码质量的基础上,拥有更多时间来关注自身的业务逻辑与代码
【框架有学习曲线,有时候,框架学习的难度比手写代码自己实现的难度要高不少】

框架做的事情,就是自带胶水,做一些脏活累活替我们集成这些组件,降低偶发复杂度,我们可以专心往里面填业务。

规定了开发者写哪些代码/不写哪些代码,怎么写代码——这就是框架主要解决的问题。

规范代码布局,约束实现方式。

  • 如果追求开发速度快,ROR
  • 如果追求方便Full Stack, Django
  • 如果追求学习简单上手, PHP框架任选
  • 如果直接瞄准FB,TB,BAT,追求性能至上,大团队开发,企业铂金镶钻级开发,Java框架任选
参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3362.html

《[collect]框架的作用》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注