本节书摘来自异步社区《android 源码设计模式解析与实战》一书中的第2章,第2.5节单例模式的简单示例,作者 何红辉 , 关爱民,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.5 单例模式的简单示例
单例模式是设计模式中比较简单的,只有一个单例类,没有其他的层次结构与抽象。该模式需要确保该类只能生成一个对象,通常是该类需要消耗较多的资源或者没有多个实例的情况。例如,一个公司只有一个ceo、一个应用只有一个application对象等。下面以公司里的ceo为例来简单演示一下,一个公司可以有几个vp、无数个员工,但是ceo只有一个,请看下面示例。
输出结果如下:
从上述的代码中可以看到,ceo类不能通过new的形式构造对象,只能通过ceo.getceo()函数来获取,而这个ceo对象是静态对象,并且在声明的时候就已经初始化,这就保证了ceo对象的唯一性。从输出结果中发现,ceo两次输出的ceo对象都是一样的,而vp、staff等类型的对象都是不同的。这个实现的核心在于将ceo类的构造方法私有化,使得外部程序不能通过构造函数来构造ceo对象,而ceo类通过一个静态方法返回一个静态对象。