Android开源库与设计模式开源组SAOS建立
Updated:
简介
在2014年年底突然参与了CSDN的博客之星评选,看着自己的博客水平实在太低,于是就想一定得写一些跟别人不太一样的博客出来。经过自己的一番思考,觉得在Android开源库的深入实现上并没有什么太多的资料,或者只是大概讲述了一些基本原理。这样我觉得是不够的,很多事情你没有自己去经历你不会有很深的认识,或者你根本不知道原来它会出现这样的问题。于是我就想我没通过学习轮子制造过程来更加深入的学习,这样不仅能够了解那些知名的开源库,也能够从实战的角度学习开源库的实现。如果你不去制造很可能只是停留在事物的表面,有些东西你想应该是这样的,但是很可能并非如此;有些东西你没有去经历,你不会知道原来它会出现这样的问题。
于是,在2014年年底,我相继推出了教你写Android网络框架、教你写Android ImageLoader框架,得到的反应还都不错。再加上我本身对于架构和设计比较感兴趣,所以一直在不断地完善Android源码分析之设计模式这个系列,希望通过分析Android系统中的设计模式来提升大家对设计模式的理解,从源码的角度来剖析既增加了对Android系统本身的了解,也从优秀的设计中领悟模式的实际运用以及它适用的场景,以此来提升初、中级工程师的设计水平。在此过程中推出了自己的第一个开源库AndroidEventBus,并且参与了Trinea的一些项目,于是对于开源有了更大的热情。
我想一个有情怀的人都不会是只顾自己,他应该在通过互联网学习到所需知识之后将自己的所思所得分享给同样需要的人,使得后来者不必经历他学习这些知识时所经历的痛苦、折腾,让别人少走弯路。尽管自己的领悟不一定正确,但是分享出来也可以让别人从另一个角度看到这件事本身。因此,我建立了这个开源组织,通过我们这些人的分享希望能够帮助到一些需要的朋友。另外,我不是什么大神,我们都还在不断地学习中,如果你认为我们的东西有什么不对、不合适的地方,欢迎指正,并且希望你加入到我们当中,就当为我们所热爱的行业做出一点贡献吧。
SAOS名字的由来
Android开源库与设计模式开源组织的英文取名为simple-android-opensource,简写为SAOS。它有两层意思,第一个意思就是符合这个组织的意思,即android开源库的简单实现;另一层意思就是我的网名Mr.Simple,用simple开头一语双关。
Android知名开源库简版实现开源项目
Android知名开源库简版实现开源项目通过分析并实现Android平台知名开源框架的简单版本深入了解开源库核心技术,并对这些库的设计思想有一定的了解。稳定、强大的开源库一般都较为复杂,比如Universal-ImageLoader,因此简版开源库不需要完全按照原版来实现,只需要把核心架构、原理实现,并且做到可运用到实际项目中即可。在实现开源库简版的同时,作者需要写一系列文章来剖析它的实现原理以及为什么要这么设计,在提升自我的同时将框架的设计与实现、领悟分享给他人。
Android源码设计模式分析开源项目
Android源码设计模式分析开源项目通过分析Android系统中的设计模式来加深大家对设计模式的理解,从源码的角度来剖析既增加了对Android系统本身的了解,也从优秀的设计中领悟模式的实际运用以及它适用的场景,避免在实际开发中的生搬硬套,提高开发人员的设计能力。
开始之前
Android平台有很多优秀的开源库,如果你对这些还不是很了解,可以参考Trinea的android-open-project列举的知名开源库。对一些知名开源库的分析请参考Trinea的android-open-project-analysis。
我想在你了解了一些开源库,并且学习了Trinea的对开源库分析的文章之后对于开源库的核心技术就有了一定的了解。此时你可以利用这些基础来重复造这些轮子,这些轮子不必很完善、稳定,只需要展示它的核心原理、设计,并且可用即可。这样从实战中学习这些开源库,不仅能够提升技术,也能够学习这些开源库的优秀设计。
如果你对面向对象不是很了解,那么在开始之前先学习一下面向对象的六大原则是非常有必要的。
Github地址与QQ交流群
Android开源库与设计模式开源组织,这是一个开发版的组织,正式版会发布在simple-android-opensource-framework。其中有两个项目,分别为Android知名开源库简版实现开源项目、Android源码设计模式分析开源项目。
QQ交流群: 413864859,欢迎大家积极参与进来,提升自我,分享知识与技术。
加群之后
加了QQ群之后,有兴趣参与开源项目的可以把github账户名发给我,我邀请大家加入组织,然后你在simple-android-framework-exchange接受我的邀请。然后你们可以在相应的仓库中填写任务表,把自己想实现的开源库或者想分析的模式填写到任务表,然后在规定的时间内完成(包括代码、核心原理分析、demo等)。我们在每期的时间点内将合格的作品发布到正式版的仓库中。