一句话设计模式:单例模式
Contents
前言
迷迷糊糊的混了几年编码界,号称编码界除名人员,所幸尚未被编码界除名。这一路走来,听说了不少设计模式,也不知道是记性不好还是怎么地,横竖也就会用个工厂模式,要不就是自己用了都不知道,惭愧的狠。前段时间读《中国哲学简史》,关于《墨经》一段“所以谓,名也;所谓,实也”,对应于代码,恰如变量名与对象存储。细细想来,编码界同建筑界同经管界同社交同布置屋子一样,莫不是哲学与方法论的不同切面展现。一个程序员的代码写的怎么样,恰如他的生活过的怎么样,生活与编码往往都在偷偷互相印证。 关于设计模式,讲解的人实在太多。暂不说应接不暇,大多数的讲解侧重于实现,举例倒也比较典型,可惜对我这样的愚夫来说,不管看个几遍也只能相忘于江湖了。再加上些许场景是多种模式的组合,那更是伤透了脑筋。 此处,尝试着将各个设计模式拆解到原子粒度,剥离不属于该设计模式的附属品,并不会刻意讲解某种语言的实现。尝试将各设计模式提供的能力正交,构成n+维模式空间,基于任务分解与建模能力的基础上,可自由组合设计模式。期望可以达到设计自由的目的。
一句话
唯一资源的访问控制,适用单例模式
解析
唯一资源
唯一资源是相对访问的客体来说,问题域不同,是否是唯一资源尚需要重新审视。例如长途客车的检票口,相对10点从上海到苏州的旅客来说,它是唯一的检票口,即唯一的资源;相对汽车站管理人员来说,这只是众多检票口中的一个。 形成唯一资源的情况有多种,常见的有以下两类:
- 唯一的物理资源,如:网络打印机、系统线程池、ID分配等等
- 以空间换性能,设计为唯一资源,如:较大的静态配置文件信息,加载内存与软件同生命周期,避免频繁IO读写 以上只是对于唯一资源的一些简单理解,具体设计需要看实际问题域。 基于设计模式作用域,只需要知道它是否是唯一资源,无需关注为什么是唯一资源,这也是此处不做详细分析的原因。
访问控制
针对唯一资源的访问控制,核心要素是什么?或许第一个蹦出脑海的就是线程安全,这当然是不对的,核心是保证唯一资源的唯一性! 唯一性包含以下几点:
- 唯一构建:唯一资源必定有且只能有一个,往往是类体或静态函数体的静态对象
- 唯一获取:访问者只能获取到唯一资源的引用,访问者无权构建或销毁此唯一资源
Author 朦呆农码
LastMod 2018-01-08