怎样学习Android开发
- 先结合官网做一个整体的把握(官网具有准确性、系统性)
- 通过官网或者相关的教程进行具体学习
- 通过实际项目或者高级进阶教程持续迭代
Android开发的特点
- 系统提供了丰富的API给我们
- 应用程序由一系列的组件(Components)组成,因此我们就需要掌握各种组件的Callback(即生命周期),组件需要在Manifest中声明,以告知系统。
- Intent(隐式/显式)把独立的应用程序组件绑定起来,协同工作,这里需要掌握如何使用Intent去操作组件。
- 理解两类API:1、系统级API,应用开发中通用、常见的API。2、插件级API,具有特定功能的APP才会用到,比如Media、Camera、Connectivity等。
Android系统架构中的设计模式与设计原则思考
一、关于设计模式和设计原则的介绍:
sshot-4.png二、模板方法设计模式
Android开发中常见的情形是这样子的:
sshot-1.png对应的时序图如下:
sshot-2.png这其中就隐含了模板方法的设计模式,关于模板方法,请查看:http://www.cnblogs.com/chenpi/p/5217430.html。
模板方法的可调用类型分为:
- 具体的操作(ConcreateClass或者对客户端的操作)
- 具体的AbstractCalss的操作(通常对子类有用的操作)
- Factory Method
- 钩子操作(Hook Operations),提供了缺省行为,子类可以再必要的时候进行扩展。一个钩子操作在缺省的时候通常是一个空操作。
例如:
sshot-3.png注意:
- 必须要子类实现——抽象,可选——钩子,不需要子类实现——final。
- 抽象方法越少越好
三、好莱坞原则
通过这种生命周期回调的模板方法设计模式,体现了好莱坞原则(don't call us , we'll call you):
- 底层组件可以让自己挂钩到系统中
- 底层组件局对不可以调用高层组件
- 高层组件确定什么时候以及怎么去使用底层组件
四、控制反转
通过这种生命周期回调的模板方法设计模式,也体现了控制反转的原则:
例如,为什么我们开发者不直接去new组件呢?对于Activity来说,本来是我们去使用Activity,结果现在是Android系统去帮我们进行维护与管理,我们只需要实现对应的回调。这样就大大降低了Android开发的难度了。
例如Intent启动组件的过程:
sshot-5.png控制反转的知识:http://blog.csdn.net/wu631464569/article/details/52433912
对于文章的最后,依赖注入(DI)只是实现控制反转(IOC)的一种方法,例如我们在操作Service的时候:
sshot-6.pngService被绑定之后,注入到Activity中,依赖对象的获得被反转。不是我们自己去new一个Service,而是通过绑定之后才注入到Activity中。
总结
为什么需要上面的设计模式和原则呢?
- 软件最不会改变的地方就是“改变”本身
- 我们的设计架构需要适应各种变化,就要求我们的软件需要松耦合、可维护、可测试。才能让自己处于主导地位。
最终,我们就可以开发出松耦合、可维护、可测试的程序。
如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:
公众号:Android开发进阶我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)。
网友评论