1995年起,著名的软件工程学家Grady Booch,Lvar Jacobson,Jin Rumbaugh携手合作,提出了统一模型语言UML(The Unified Modeling Language)
1997年,UML被美国工业标准化组织OMG接受。
为什么要学习UML?你一定听说过架构师这个词语,而且它经常跟Java、.NET这样的面向对象的平台结合在一起,就构成了Java架构师,.NET架构师,UML就是能让你更好的,更完备的面向对象编程,让面向对象的分析与设计的过程变得更加的有效和科学,构建更具有鲁棒性的大型系统的一种语言,又或者称之为方法和工具。
而如今,编程语言界,复古之风盛行,函数式编程也被越来越多的人所接受,我作为初学者,暂时还不清楚,UML能不能运用到函数式编程的过程中,又或者是针对函数式编程,业界早就已经有其他类似与UML的其他完善的解决方案。
说一下我为什么突发奇想好好学学这个UML语言,在面对我比较感兴趣的事物面前,我一直喜欢刨根问底,喜欢看源码,打开IDEA,再打开spring官网,照着官方案例敲代码的过程中,每次看到不认识的类名,接口名,注解,我就忍不住去按Ctrl键查看它的源码,结果当然是铩羽而归,因为里面有更多你从来没见过的类名,接口名,注解名,简直眼花缭乱,看源码,已经成为初学者的比较高门槛的一件事情了。
spring系列的源码里面,每个类或者接口的名字其实都是有含义的,而且都是英语语法里面的名词,而不可能是动词,同时使用的大量设计模式,比如类/接口名字的后半部分为Factory的,如最常见的spring-bean包里面的BeanFactory就运用了创建型模式的工厂模式或者抽象工厂模式,又比如类/接口名字的后边部分为Adapter的,就运用了结构型模式里的适配器模式,带Converter的就是和类型转换有关的,带Exception的就是和异常有关的,带Utils的就是工具类......这些多的数不胜数,但是最关键的是,就算你从一个类/接口的名字的字面意思上大致看出了这个类大体是做什么的,有什么作用,你还是不会明白,像Spring这样的拥有十几年的大型开源成熟框架,各个类之间的关系和架构模式,说白了,从零开始开发一个Spring系列级别的框架,又或者是从零开始开发一个Mysql数据库,难度不亚于任何一个国内的大型互联网企业的任何系统或产品,因为他对开发者的要求比开发一个产品的开发者高,开发一个产品,团队可能只有几个架构师,如果你是一个几年经验的Java开发(尚无法担任架构工作),可能做的就只能是写一下业务逻辑或者做一点基础架构,而开源框架就不同,它里面几乎没有面向用户的明确的业务逻辑,它有的只是面向程序员和开发者的高度抽象的业务逻辑,所以如果向往架构方面发展,你就必须啃源码,如果不认同这个观点,全世界的程序员可以有很多,但是Github上的spring项目的Contributors也就只有几百人,可见架构的工作,是有门槛的。
说了这么多,无非就是想说,通往架构师之路的一条高效道路是研究源码,研究源码能力越强,你就越容易,越早,也会越轻松的成为年薪百万的架构师