设计模式二-----单件模式
单件模式的主要用途在于控制某个类型的实例数量–有且仅有一个,例如与统计相关业务需求实现。(单件模式的主要意图就是控制该类只能够创建一个实例,同时向客户程序提供唯一访问它的全局访问点)
试图通过经典单件模式实现分布式环境下的“单件”不现实,因此,项目中的“单”字是有上下文和语义范围限制
一、实现单件的方式
外部方式:
客户程序使用某些全局对象时,做一些Try-Use的工作;
如果没有,就自己创建一个,把它放在全局位置上;
如果原本有,就直接用一个现成的。
内部方式:
类型自己控制生成实例的数量,无论客户程序是否Try过,类型自己控制就提供一个实例,客户程序使用的都是这个现成的唯一的实例
相比较而言,外部方式很不可靠,毕竟实例不只是一个,同时也不能做到全部的客户程序都做这种唯一性的检查。内部方式把干扰因素排除在类型之外,相对更保险一些
二、多线程问题
值得注意的问题是单件模式遇到多线程调用问题
1、可以添加关键字(volatilc,表示字段可能被多个线程修改