框架和层级

去年在学校准备找工作的时候,因为没有学过Java的一些常用框架从而导致自己碰了不少壁。现在算上实习和工作大概5个月对框架和代码层级有了一些理解和认识,简单谈谈自己的看法。当然,这些看法应该还是比较浅薄的,或许一段时间之后再看自己的这篇文章可能会觉得自己的理解还不够深刻吧!

1.什么是框架

我理解的框架时让你来实现一个接口的某个方法,当程序运行时这个方法会被调用,但是你并没有写过调用这个方法的代码。框架这个词很形象,它的意思就是说我把主要的都给你做好了,你只要往里面填充一些东西就可以完成。
举一个最常见的例子:JDK中的多线程。

@Override
public void run(){
    //do something
}

当我们使用多线程的时候,我们一般让这个类继承runnable接口,然后实现run方法,在使用的时候我们调用start()方法。这时我们可以看到我们在run()方法中写的代码被执行,但是我们并没有调用过run()方法。
run()方法肯定被调用了,既然我们没有调用,那就是JDK调用了。那么这其实就可以看作是一个框架。框架是什么,我认为它是一种抽象,有些框架在上层进行了抽象,就像我们前面讲的例子,或者Spring MVC的DispatcherServlet,一般是让你实现它给的接口就可以按照我们想要的逻辑运行;另一种对底层做了抽象,类似mybatis(mybatis封装了JDBC对象转换的细节)。
并非只有ssh或者ssm才称得上是框架,我们再举一个JDK中的例子:HashSet集合与hashcode()、equals()方法。当我们向HashSet中add一个元素时这两个方法都会被调用。

2.什么是层级

我们看下面两段代码:

public class Layer1{
    public int sum(int a, int b){
        return a + b;
    }
}
public class Layer2{
    Layer1 layer1;
    public int sum(Param param1, Param param2){
        int a = param1.getNum();
        int b = param1.getNum();
        layer1.sum(a, b);
    }
}

Layer1这个类负责具体的计算逻辑,Layer2这个类负责提取入参中的有用信息,然后调用Layer1来执行计算逻辑。这里Layer2就是在Layer1之上封装的一层,这一层的作用就是拆解入参,这样很能体现出代码的单一职责。你可能觉得这样做多了好几个类,增添了许多调来调去的没有逻辑的代码,但是这样的代码可读性是很强的,可维护性也很强,不会出现牵一发而动全身的问题。搞学术研究的人一般都不太注意代码的可读性和可维护性,这一点和工程不同。搞工程未必有多么复杂的业务逻辑,不需要多么高深的算法,但是合理的设计可以提升代码的扩展性和维护性,而且许多架构的设计也能大大提升一个系统的性能和吞吐量(例如对高耗时的服务使用缓存)。
我见过许多鄙视这些写业务代码的人,觉得这都是面向API编程,没什么技术含量,他们动不动就提底层,提数学。我也只是一只菜鸟,没有评价人家的权利,但我很不认同这种看法。因为写业务代码也可以学到很多,前提是你要有一点求知欲,想知道自己的的代码什么时候被调用,想知道自己调用的类库的代码是如何实现的。其实许多框架是很好的源码,当熟悉一个框架的使用后尝试着去看一些它的源码,我想这样能获得很大的提升。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,463评论 25 707
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,066评论 0 62
  • 我们从很早就开始学习英语了,但是始终不见起色,照样是看别人说容易自己说难;照样是看到外国人,想去上前搭话却胆怯开口...
    我是荷叶田田阅读 144评论 0 1
  • 此文是笔者从大学毕业参加工作6年后受到爱因斯坦的质能方程E=MC2和个人经历总结而来,对于刚参加工作的学弟们可...
    苦行果阅读 805评论 1 2