博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每天一个设计模式之单例模式
阅读量:6400 次
发布时间:2019-06-23

本文共 1219 字,大约阅读时间需要 4 分钟。

博主按: 旨在初步领会设计模式的精髓,目前采用
javascript(_靠这吃饭_)和
python(_纯粹喜欢_)两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :)
  1. 网速过慢的朋友请移步
  2. 欢迎来我的小站看更多干货 + 免费教程:

0. 项目地址

1. 什么是单例模式?

单例模式定义:保证一个类仅有一个实例,并提供访问此实例的全局访问点。

2. 单例模式用途

如果一个类负责连接数据库的线程池、日志记录逻辑等等,此时需要单例模式来保证对象不被重复创建,以达到降低开销的目的。

3. 代码实现

需要指明的是,
以下实现的单例模式均为“惰性单例”:只有在用户需要的时候才会创建对象实例。

3.1 python3 实现

class Singleton:  # 将实例作为静态变量  __instance = None  @staticmethod  def get_instance():    if Singleton.__instance == None:      # 如果没有初始化实例,则调用初始化函数      # 为Singleton生成 instance 实例      Singleton()    return Singleton.__instance  def __init__(self):    if Singleton.__instance != None:      raise Exception("请通过get_instance()获得实例")    else:      # 为Singleton生成 instance 实例      Singleton.__instance = selfif __name__ == "__main__":  s1 = Singleton.get_instance()  s2 = Singleton.get_instance()  # 查看内存地址是否相同  print(id(s1) == id(s2))

3.2 javascript 实现

const Singleton = function() {};Singleton.getInstance = (function() {  // 由于es6没有静态类型,故闭包: 函数外部无法访问 instance  let instance = null;  return function() {    // 检查是否存在实例    if (!instance) {      instance = new Singleton();    }    return instance;  };})();let s1 = Singleton.getInstance();let s2 = Singleton.getInstance();console.log(s1 === s2);

转载地址:http://fhyea.baihongyu.com/

你可能感兴趣的文章
演示:引发的次优路径故障分析与排除
查看>>
[零基础学JAVA]Java SE应用部分-35.JAVA类集之三
查看>>
c++设计一个无法被继承的类
查看>>
Scrum为什么不喜欢“来自客户的频繁变更”?
查看>>
[浪子学编程][读书笔记]-道法自然之设计方法
查看>>
Silverlight button 图片切换样式
查看>>
Windows Azure Virtual Machine (1) IaaS用户手册
查看>>
python 提取主域名和子域名代码——先根据规则提取,如果有问题,则使用tldextract...
查看>>
漂亮的后台 模板
查看>>
数据挖掘学习08 - 实验:使用R评估kmeans聚类的最优K
查看>>
git配置
查看>>
灵活定义神经网络结构
查看>>
java10 WeakHashMap
查看>>
CentOS7下安装mysql5.6修改字符集为utf8并开放端口允许远程访问
查看>>
ElasticSearch入门 第二篇:集群配置
查看>>
Solr开发文档
查看>>
关于Python Package下的Module import方式[转]
查看>>
对于key的操作命令
查看>>
MySQL · 捉虫动态 · 字符集相关变量介绍及binlog中字符集相关缺陷分析
查看>>
.Net Discovery系列之十一-深入理解平台机制与性能影响 (中)
查看>>