这是我们最常见的一类模式,对这一类模式有一个通用的特点就是:
封装创建的方式和过程。
这里所谓封装就是隐藏的意思,对对象的创建方法和过程不可见,或者是虚拟的过程。
隐藏创建方式,就是如单例,工厂方法,隐藏创建过程则是指builder,原型,至于抽象工厂,我认为他包含了以上两种。
我们想想一个对象的创建有哪些步骤?
1、创建什么东西?--接口定义
2、谁创建? --决策类or帮助类
3、如何创建? --how,创建过程
4、什么时候创建? --创建时机的触发
由此可知,创建型就是在上面几个点做文章
我将单例模式放在最前面来讲,是因为简单和直白。
1、单例模式
gof原文这么讲的:
复制代码Ensure a class only has one instance, and providea global point of access to it
有2点:
a、仅且只能有1个实例
b、提供一个全局访问点
就是说一个对象只能生成一次,然后可以全局个方法或者类去调用。
<有事离开,未完待续>
从上面描述就知道,我们一般在需要只用对象的一个实例的时候才用到这个模式,类似我们常说的全局对象,在j2ee中我们知道默认spring初始化bean的时候都是单例的,我们也可以在配置文件中定义,如下:
复制代码
<bean id="foo" class="foo" singleton="true" />
这告诉spring容器,foo的实例只会生成一次。
那么在android中,有哪些地方用到了单例模式呢?
我们知道一个手机中,打开输入法,不管在哪打开,其实都是一个实例;Activity.java中有一个mSearchManager的对象它也是单例对象;如果是android原生系统,有个全局搜索global,如果看android源码,你会发现DisplayManagerGlobal,WindowManagerGlobal等等很多都是单例的,这些对象负责管理整个手机的运行处理。我们来看 WindowManagerGlobal 的实现:










