Architecture

Submitted by Lizhe on Tue, 06/06/2017 - 23:37

今天被问到如何设计API , 说实话突然被这么问有点蒙圈

7年前老白总是告诉我

如果你要做一个junior developer, 你只需要知道 "怎么做" 就可以了, 但是如果要成为一个senior , 一定要知道 "为什么这么做"

后来有机会面试别人的时候也总是喜欢问candidate "你为什么要这么做" , 得到的好答案却寥寥无几

当你去问一个求职者, "什么是单例" , 有备而来的求职者会说得条条是道, 懒汉式 饿汉式 同步 私有构造器 都会脱口而出

然后当你再去问 "什么是对象的生命周期" 他也会给出很标准的答案

可惜的是, 当提到 " 你为什么要使用spring的ioc容器时 " , 很多candidate只是说, 就是这么用的, 项目里都在用...

实际上有些年轻人(其实也只比我年轻一点点甚至是同龄人)从来没有认真使用过servlet, 也没有使用过工厂, 甚至现在的科班出身的计算机系学生也不会再考虑Cpp语言为何需要析构函数了

他们关心的也许只是 "如何搭建SSH" 开发框架, 而从来不问自己 " 我为什么要使用spring "

 

我喜欢剖析框架, 以前在Citi工作的时候也总是喜欢去看JFP的源码, 一直觉得编程就像是金庸武侠小说里武功

一开始都是一招一式的学习, 终于学会了helloworld, 后来本门派的武功就用得融汇贯通了, 随便就能写几个嵌套循环, 什么HashMap ArrayList也是随手拈来, 再后来旁门左道的功夫也多少会点, 什么工厂模式 适配器 通知模式, 最后的境界却是 无招无式 你不需要考虑什么是设计模式, 你只知道这样做是对的还是错的, 你只会选择最合适的

 

所以今天开始创建一个新type, 总结一下自己看过的设计, 顺便谈谈自己的理解