最近一个月左右的时间,在学习Struts2这个框架,然后从不明白什么是框架到现在就想说一点自己学习的感受。
从最开始说起吧,从学习java以来,到了J2EE这个领域,听到最多的SSH这个名词,当时确实是不明白这时什么东西,只知道这些都是“框架”,但是框架是什么呢?开始是一个很模糊的概念,框架是什么?解决了什么问题?有什么作用,它的好处是什么?每一个疑问我都急切的想知道答案,其实是直到今天中午才真正的感觉概念有点清晰了。
这个层次的复用导致了应用和它所基于的软件之间的控制反转(inversion of control)。当你使用工具箱(或传统的子程序库)时,你需要写应用软件的主体并且调用你想复用的代码。而当你使用框架时,你应该复用应用的主体,写主体调用的代码。你不得不以特定的名字和调用约定来写操作地实现,但这会减少你需要做出的设计决策。
后来看downpour大哥的系列文章里面有一段话我也是印象深刻
结合Struts2的学习,然后我的总结如下,可能有些地方理解的也不对。
1.首先,framework不同于工具类,工具类是被动的,我们作为主体,去调用相应的工具类来实现某些功能,而框架作为一个主体,它的作用就是调用我们的类。这一点在我引用的第一段话中有所体现。
2.框架预先定义了一些不变的东西,我们可以理解为它只是搭建了一种结构,当你在开发时,需要去适应它的这种结构,就象建筑开发商刚改的房子,没有门窗和装修,这只是一个大的架构,当你要去完善它的时候,你需要遵循它的某种规范。比如,你要给新房子装一个门,你必须要按照它的标准去造一个门或是去买一个门。
3.IoC和DI同样很有意思,几乎框架都会有这个特性,比如在Struts2中,针对于某个Action,对于具体的数据模型,你不需要创建他们的实例,只要你按照某种方式按某种约定来进行编程,框架本身就会帮你完成一些基本的工作,比如接受客户端的请求参数,并放到相应的对象中去。
最后说说框架解决了什么问题以及使用它们的好处。首先就想downpour说的,框架是为了解决某些问题而产生的,他们本身适合于解决某一类问题,对于Struts2来说它是MVC2的实现,主要是对VC的实现。使用它们最大的好处可能就是加速开发和易于后期维护吧。