【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
最近很少写blog,主要是因为自己一直在看麦子学院的东西,学习的时间偏多一些。麦子学院是一个网上视频学习网站,讲述的主要是it开发的相关内容,有兴趣的同学可以关注一下。另外一个我自己也觉得不错的网站是极客学院。当然这些都是题外话了。
前几天,正好有一位前同事问我,怎么学些软件架构这些东西?正好自己自己最近也在关注这方面的东西,所以我告诉了他一些个人的想法。
1、软件架构离不开具体的业务,也就是说只有理解了业务,才能有好的架构。目前描述业务最多的语言还是uml,通过用例图、类图、顺序图、状态图、活动图、组件图和部署图,就可以把基本的业务模型搭建出来。一开始的时候,你使用uml或许会有一些陌生,但是熟能生巧,自己就会慢慢从中领略到精髓。俗话说,文不如表,表不如图,uml就是那个顺利和别人沟通的图。
2、当然除了uml之外,自己还需要了解一些基本的设计模式,这其中包括mvc、mvvm、move、reactor模式等等。mvc是最基本的设计方法,常用在客户端的开发当中,mvvm和move是它发展出来的新模式。而reactor则用在服务器编程中比较多,云风的skynet开源代码也使用到了它的方法。
3、一些经典的、关于设计的书籍还是要看的,比如说head first、design pattern等等。即使暂时看不懂,关系也不大,可以后面想起来的时候再拿起来翻一番,或许有了工作的积累之后理解得更加深刻。
4、找一些开源的项目练练手,看看别人是怎么做的。不管是pc的代码,还是android的代码,只要你认真分析下来总会有很多收获。就拿android来说,其实大多数app都是相似的,基本上可以分为工具类、游戏类、hybrid 混合开发类三种。如果你可以把这些app流程图画下来,并且进行0像素的copy,那么你就会慢慢找到那个做产品的感觉了,进而将软件架构抽象出来。分析和模仿别人的应用本身并不可耻,只是不要用在商业上就可以了。
5、了解一下移动互联网的基本架构。掌握移动互联网是怎么做到跨平台开发、如果做到统一的服务器api开发、如何缓存、如何均衡负载、如何添加搜索和推荐功能、什么时候cdn加速、如何升级、怎样灰度发布等等?慢慢地做下去,那些你需要解决的问题,会让你勇往向前,不断进步的。
总之,就是找到自己的兴趣点,按照uml的业务流程,结合已有的框架,借鉴别人的设计,不断提高自己软件设计的水平。