设计模式这一概念最初源于建筑学,它的提出者克里斯托弗-亚历山大认为建筑设计要围绕以人为本的目的。建筑物要基于社会和人性来设计,程序设计亦是如此。
虽然简单套用模式并不能解决所有问题,但是模式这一理念对一些广泛的基础场景指出了最佳实践,是一种务实的分析和设计方法,是值得程序设计者学习和理解的,并时刻提醒设计者,设计模式的核心意义就是以人为本,设计要服务于人。
1994年,由四位面向对象领域专家合著出版了《设计模式:可复用面向对象软件的基础》,这本书中介绍了程序设计中常用的23中设计模式。这篇文章将介绍其中之一-单例模式
模式简介
单例模式是一种创建型模式,其核心是保证一个类对象只有一个实例,并提供一个可访问它的全局访问的方法。
现实应用
在运行手机APP时,打开了一个软件,当我们回到桌面再打开这个软件时,系统不会把这个软件重新打开一次,而是将刚才你打开的内容展现出来,以保证手机上同时只有一个该软件运行。
程序设计分析
对于调用者来说,如何才能做到确保代码中的某个类只存在一个实例,而且实例一旦创建就可以向整个运行程序提供全局访问的方法,由全局程序共享呢?
这里我们需要定义个类,这个类要能够实现以下特性。一、这个类只能有一个实例,即便再次创建实例,该类也能够保证返回的是同一个实例对象,而不是再创建出的新实例对象;二、该类必须能够在内部控制实例的创建,而不是由调用者任意创建;三、这个类能够被全局访问和共享。
解决方案
定义一个类A,该类是私有类,这使得在类的外部不可以直接创建类实例,该类定义一个静态方法B,用于通过调用类来创建和返回该类的唯一的实例,而不是通过调用对象。
第一次调用B方法时将创建唯一的实例,以后调用B方法时,会返回第一次创建时的实例对象,这样就保证了系统中只存在唯一的实例对象。