Context
从开始写Android程序的那一天也就我们就知道了有context的存在,本猿当时一直好奇context是什么东西,在后来的学习中逐渐明白了context的重要性,但一直没有写下来好好总结一下。
从最初的上下文我理所当然认为上下文就是为了让程序员调用方便,快速编程,后来思索为什么要搞一个context,为什么不搞其他的东西来代替context为什么要把context设计出来,保持着存在即合理的态度我们去追寻google当时的设计思想。
当我们终有一天搞清除了Activity,Service,Application都是context的时候就好奇为什么google要这样设计。
当在网络博客里看了context类图,我们就好奇这个设计模式
装饰器模式:
装饰器模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活;它允许向一个现有的对象添加新的功能,同时又不改变其结构
看一下装饰器模式的类图
![](https://img.haomeiwen.com/i618507/3794d5d41d65a0fd.jpg)
继续看一下Context的类图
![](https://img.haomeiwen.com/i618507/b714d70c075aa7e5.jpg)
关于装饰器模式
装饰器模式出现还是为了解决过多的继承,举个栗子:
Google现在有Android系统,然后衍生出来很多 如: Android1, Android2, Android3.。。。
类图如下,我们发现这样的类很难管理,当android子类型越来越多,目前使用集成的方法很难适配接下来的工作了,因为每个衍生Android都有自己的特色
![](https://img.haomeiwen.com/i618507/672b8dc6d8fac0cf.jpg)
由于Android1,2,3是逐渐递增的,所有走一个分支
Android thin 与 Android auto是Android lite下的一个子类,又各自又特色
于是我们改造一下
![](https://img.haomeiwen.com/i618507/d07efce53ece62de.jpg)
这个是利用继承与组合达到的一个最优解。
其实这里没有多么复杂的设计也没有什么高深的技术,就是利用继承与组合完成了。
网友评论