Android应用开发的一些思考

298 阅读3分钟

###怎样学习Android开发

  1. 先结合官网做一个整体的把握(官网具有准确性、系统性)
  2. 通过官网或者相关的教程进行具体学习
  3. 通过实际项目或者高级进阶教程持续迭代

###Android开发的特点

  1. 系统提供了丰富的API给我们
  2. 应用程序由一系列的组件(Components)组成,因此我们就需要掌握各种组件的Callback(即生命周期),组件需要在Manifest中声明,以告知系统。
  3. Intent(隐式/显式)把独立的应用程序组件绑定起来,协同工作,这里需要掌握如何使用Intent去操作组件。
  4. 理解两类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。

模板方法的可调用类型分为:

  1. 具体的操作(ConcreateClass或者对客户端的操作)
  2. 具体的AbstractCalss的操作(通常对子类有用的操作)
  3. Factory Method
  4. 钩子操作(Hook Operations),提供了缺省行为,子类可以再必要的时候进行扩展。一个钩子操作在缺省的时候通常是一个空操作。

例如:

sshot-3.png

注意:

  1. 必须要子类实现——抽象,可选——钩子,不需要子类实现——final。
  2. 抽象方法越少越好

####三、好莱坞原则

通过这种生命周期回调的模板方法设计模式,体现了好莱坞原则(don't call us , we'll call you):

  1. 底层组件可以让自己挂钩到系统中
  2. 底层组件局对不可以调用高层组件
  3. 高层组件确定什么时候以及怎么去使用底层组件

####四、控制反转

通过这种生命周期回调的模板方法设计模式,也体现了控制反转的原则:

例如,为什么我们开发者不直接去new组件呢?对于Activity来说,本来是我们去使用Activity,结果现在是Android系统去帮我们进行维护与管理,我们只需要实现对应的回调。这样就大大降低了Android开发的难度了。

例如Intent启动组件的过程:

sshot-5.png

控制反转的知识:http://blog.csdn.net/wu631464569/article/details/52433912

对于文章的最后,依赖注入(DI)只是实现控制反转(IOC)的一种方法,例如我们在操作Service的时候:

sshot-6.png

Service被绑定之后,注入到Activity中,依赖对象的获得被反转。不是我们自己去new一个Service,而是通过绑定之后才注入到Activity中。

###总结

为什么需要上面的设计模式和原则呢?

  1. 软件最不会改变的地方就是“改变”本身
  2. 我们的设计架构需要适应各种变化,就要求我们的软件需要松耦合、可维护、可测试。才能让自己处于主导地位。

最终,我们就可以开发出松耦合、可维护、可测试的程序。

如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:

公众号:Android开发进阶

我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)