我认为无论你是否使用Java这样的面向对象语言,面向对象的思想都是每个技术人必须要掌握的。面向对象不是某个语言的专利,而是最重要的几个思考模型之一,他给了我们一个最基本的分拆复杂业务的工具。但是能用好面向对象不容易,需要我们对他有深刻的理解,掌握常见的设计模式,并在业务中不断实践总结。
先来说一下什么是对象,对象就是一组属性和方法的组合,是我们认识和抽象事物的基本单元。对象之间可以继承和组合,这是对象之间的静态关系;同时,对象又通过方法构建起来与其他对象之间的动态关系。对象以及静态关系和动态关系组成了面向对象描述事物的方式,我们就是要通过这个方式,来理解万事万物,把业务翻译成计算机理解的架构。
那怎么提高我们使用面向对象工具的段位呢?其实业内早就总结出了很多设计模式,这些模式都是成熟的应用套路,而且在实际业务中被普遍采用,我觉得一定要花时间学习和实践这些模式,刻意练习,最终才能提升我们的段位。
我们在学习和实践设计模式的时候,还要谨记一点,那就是我们使用他的目标是什么,目标就是管控系统复杂度和提升扩展性。说到底,面向对象只是一个思维工具,我们的目标仍然是适应业务的发展,管控系统的复杂度和可扩展性。怎么用好他还是取决于我们对于业务的理解程度。对业务认知越透彻,抽象层次越高,对于业务的拆分就越贴近业务本质,我们就越能掌握业务发展的趋势,系统的复杂度和扩展性就能越能被管理好。
从这两个维度出发,我们在学习和实践中,就要分析一个设计模式为什么这么设计,他面临的业务情况是什么样的,是怎么解决这两个问题的,我们才能真正了解这个设计模式的本质,当我们碰到类似情况的时候,才能举一反三。同时,我们还得认识到这些模式背后,其实还是我们之前说过的两个核心思路,分拆和复用,万变不离其宗。
下面,我想从技术架构的三个演变历史,来串讲几个常见的设计模式,同时也回顾一下技术发展的历程。这两个演进历史,分别是:
1、BS架构的演变史,从CGI到Servlet,从MVC到MVP再到MVVM,基于浏览器的服务器架构几乎是互联网的基础,他是如何一步步演化的;
2、JavaEE的演变史,从JSP到J2EE,再到JavaEE,再到现在的SOA轻服务架构,Java企业服务架构目前是互联网的主流架构之一,他是如何演进的;
3、手机操作系统演变史,从Linux操作系统到嵌入式Linux,再到Android。手机,一个改变人类生活方式的产品,他的操作系统是如何演进的;
我想,我们只有知道了这些技术源自哪里,当时为什么这么设计,解决什么问题,才能知道未来的演进方向在哪里,同时,对我们设计自己的业务架构也会大有裨益。