Struts2技术内幕 读书笔记一 框架的本质

网友投稿 624 2022-09-04

Struts2技术内幕 读书笔记一 框架的本质

Struts2技术内幕 读书笔记一 框架的本质

if(str==null || str.length()==0){ //...你的逻辑}

上面这段代码,无论是语法还是功能都很简单:判断一个字符串是否为空。

我们仔细回想一下,我们所写的java代码首先就得得到java的语法支持和基本功能的api支持(例如上面的str.length()就是返回字符串的长度)。再换句话说我们所写的代码都依赖一个最最基本的条件:

jdk所提供的api支持***

如果一个需求被重复1000次,那么我们就需要重复1000次针对需求的解决方法。如果一个项目里我们有1000个地方都需要判断字符串是否为空,当然上面的代码完全可以,不过我们是不是能够对它做一点点重构呢?

public abstract class StringUtils{ public static boolean isEmpty(String str){ return str.length()==0 || str==null; }}

在我们的代码里要使用上面的功能,代码如下:

if(StringUtils.isEmpty(str)){ //...你的逻辑}

我们对代码做了一次小小的改进,可就是这个改进,让我们的代码有了两个良好的品质:

1 可读性

只要是学过英语的朋友,应该都知道empty的意思吧。对"判断字符串是否为空"这个功能点,我们抽象出一个方法,名字就叫做isEmpty,不就是见名知义吗?相信一些有经验的程序员看到isEmpty的方法名就能想到内部的实现过程。我们再看看未重构前的代码,如果在一个七八百行的代码片段里,我们最初写的那部分代码是不能引起我们思维的停顿的。而后者作为一个提炼出来的方法,可以给我们一个直观的提示。

2 可扩展性

这个就更简单了,如果对"判断字符串是否为空"这个功能点做一下改变,之前的方法需要改1000次,而抽取出逻辑合成一个新的方法就只需要改一次。

其实上面的问题,很多计算机前辈都已经预见到了,在Apache的common-lang.jar里面就有类似的代码。如果我们想使用Apache的功能扩展,只需要将上面的那个jar包加到CLASSPATH中即可。

上面的道理很简单,大家都干过,但就是这个简单的例子,告诉了我们一个深刻的道理:

每当我们把一个jar包加入CLASSPATH中,就等于获得了jar中所有对jdk的额外支持。

我们所有的程序,其内在结构如下:

最底层的就是jvm,它提供了java程序运行的基础环境;再之上就是jdk,它是构建在jvm上的基本的对象行为的定义。再之上就是jar包层次,通过上图大家也能看到,jar包层次里面似乎是一块一块的砖头,它们间是可区分的,但是这些砖头合在一起构成一层,为最上层的我们写的应用程序服务。

看eclipse里面CLASSPATH的截图,我们可以看到我们所熟悉的框架都是以一个一个的jar包的形式被加载到程序运行所依赖的CLASSPATH中的。

因而我们又可以得出一个结论:

框架只是一个jar包而已,其本质是对jdk的功能扩展。

那么我们为什么要把jar包加入CLASSPATH呢?回想我们最开始说的字符串判空,我们的初衷就是:

解决中某个领域的开发中遇到的困境。

因而,框架存在的意义:

是在某个领域内,解决问题。

所以,对我们程序员来说,千万不要为了学框架而学框架,我们应该抱着为了解决某些问题的态度来学习框架。

这篇只是一个预热,下面我们再谈谈web开发的一些"基础知识"。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:bootstrap的模态框
下一篇:10分钟了解Docker,运维和开发视角有什么不同?(分别从运维视角和开发视角给出docker的认知)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~