Today does not walk, will have to run tomorrow.
原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制处一个内部属性一致的对象,这个过程也就是我们俗称的“克隆”。被克隆的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。
所有需要显示到屏幕上的内容(包括Activity、Dialog等)都是通过WindowManager
来操作的,WindowManager
是一个非常重要的子系统,这就是我们常说的WMS(Window Manager Service)
。本文的目的是理清WindowManager
的基本知识脉络,抛开具体的细枝末节,只关心WindowManager
和 WindowManagerService
(后续简称WMS
)、Surface
、SurfaceFlinger
等建立关联以及交互的一个基本过程。
Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
因为一个负载的对象又很多大量组成部分,如汽车,有车轮、方向盘、发动机,还有各种小零件等,如何将这些部件装配成一辆汽车,这个装配过程很漫长,也很复杂,对于这种情况,为了在构建过程中对外部隐藏实现细节,就可以使用Builder 模式将部件和组装过程分离,使得构建过程和部件都可以自由扩展,两者之间的耦合也降到最低。
介绍
单例模式是应用最广的模式之一,也可能是很多初级工程师唯一会使用的设计模式,在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。如在一个应用中,应该只有一个ImageLoader实例,这个ImageLoader 中又含有线程池、缓存系统、网络请求等,很消耗资源,因此,没有理由让它构造多个实例。这种不能自由构造对象的情况,就是单例模式的使用场景。
很多Android源码的实现都有设计模式的影子,对于很多从事Android开发的读者来说,学习Android源码的最大障碍往往是对其设计思想的理解而非源码本身,很多时候我们能看懂一段源码但却不明白其思想,看懂的是这一段源码的实现逻辑而不懂的则是为什么逻辑会是这样,对于开发者来说,知其然却又不知其所以然往往是进阶中最大的阻力。