打个比方,开发一个Web应用,你可以使用Spring,也可以不用,框架的好处在于,在原生的Java语言之上提供了许多组件,其实,说白了,就是提供一系列的Java类,让我们可以直接使用,方便我们专注于业务逻辑,把一些脏活、累活交给框架来做,当然,框架的作用远不止这些。
为什么需要框架
- 简化开发,通过适当的配置即可完成开发;
- 规范开发程序,一个业务逻辑,如果没有框架,不同的人来实现,代码的差异会很大,有了框架,代码的差异性变小,便于维护;
- 提供了更加优雅的实现方式。有些轮子我们也可以自己造,但是由于每个人能力存在差距,这就导致每个人造出的轮子的质量参差不齐,甚至,绝大部分人是造不出轮子的;
- …
如此,框架应运而生,从某种程度上来说,开发一个框架的技术门槛要比开发一个应用高得多,专业的人做专业的事,造轮子的人专门去造轮子,然后把框架开源,不断优化。框架也为行业提供了规则,使用不同的框架,就要遵循不同的规则。大家都用同一个框架的好处在于,虽然在业务逻辑层面的代码仍然各有不同,但是框架部分是固定的,这也就在有一定程度上保证了代码的规范性,规范性带来的是代码的可维护性。
说白了,框架的诞生,压缩了程序员自由发挥的空间,它就像一个个盒子,大家都用同样的盒子,然后在盒子里完成各自的业务逻辑,盒子与盒子之间通过接口连接、传达信息,这样一来,各个盒子各司其职,而且维护起来也比较方便,排错的时候,我们只需要找到对应的盒子即可。
这就是组件化的思想,方便拆分、整合。
框架和类库的区别
《道法自然》描述了框架和类库之间的区别:
框架是一个‘半成品’的应用程序,而类库只包含一系列可被应用程序调用的类。类库给用户提供了一系列可复用的类,这些类的设计都符合面向对象原则和模式。用户使用时,可以创建这些类的实例,或从这些类中继承出新的派生类,然后调用类中相应的功能。
在这一过程中,类库总是被动地响应用户的调用请求。框架则会为某一特定目的实现一个基本的、可执行的架构。框架中已经包含了应用程序从启动到运行的主要流程,流程中那些无法预先确定的步骤留给用户来实现。程序运行时,框架系统自动调用用户实现的功能组件。这时,框架系统的行为是主动的。