博客
关于我
设计模式这样玩泰简单(Golang版)-单例模式
阅读量:142 次
发布时间:2019-02-28

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

场景

老板:“现在咱们要搞个单例,整个系统跑起来就只能有一个对象,实现吧?” 你:“好的老板,那就使用单例模式。”

方案

我们使用单例设计模式可以解决这个问题。单例指的就是在某个类的内部维护自己一个对象实例,并只能通过单一接口暴露出去。一般我们实现单例可以用饿汉模式和懒汉模式。两种模式的区别在于实现时是否提前创建对象实例。

饿汉模式是最简单的实现方式,直接在类初始化时创建对象实例,并将其存储起来等待使用。懒汉模式则稍微复杂一些,会在第一次需要使用对象实例时创建实例。两种方式都能实现单例的功能,但懒汉模式在某些高并发场景下需要额外的锁机制来保证线程安全。

单例模式的主要应用场景是需要全局唯一对象的场合。比如手机应用程序的主进程,或者Java Spring中的Bean容器。这些场景都需要确保系统运行中只有一个对象实例。

实现

代码示例如下:
package mainimport (	"fmt"	"sync")type Singleton struct {	Name string}var singletonHungry = &Singleton{	Name: "singletonHungry",}var singletonLazy *Singletonvar once sync.Oncefunc GetSingletonHungry() *Singleton {	return singletonHungry}func GetSingletonLazy() *Singleton {	if singletonLazy == nil {		once.Do(func() {			singletonLazy = &Singleton{				Name: "singletonLazy",			}		})	}	return singletonLazy}func main() {	fmt.Println("设计一个单例模式")	fmt.Println("好的老板")	fmt.Println(GetSingletonHungry().Name)	fmt.Println(GetSingletonLazy().Name)}

这个代码实现了懒汉模式和饿汉模式两种单例实现方式。懒汉模式通过sync.Once保证了线程安全,而饿汉模式则直接在类初始化时创建对象实例。无论是哪种模式,都确保了系统中只有一个对象实例。

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

你可能感兴趣的文章
oracle 修改字段类型方法
查看>>
Oracle 写存储过程的一个模板还有一些基本的知识点
查看>>
Oracle 创建 DBLink 的方法
查看>>
oracle 创建字段自增长——两种实现方式汇总
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
oracle 可传输的表空间:rman
查看>>
Oracle 启动监听命令
查看>>
oracle 学习
查看>>
ORACLE 客户端工具连接oracle 12504
查看>>
oracle 查询clob
查看>>
oracle 行转列
查看>>
Oracle 表
查看>>
Oracle 递归
查看>>
oracle 逻辑优化,提升高度,综合SQL上下文进行逻辑优化
查看>>
oracle 闪回关闭,关闭闪回即disable flashback的操作步骤
查看>>
oracle 限制用户并行,insert /*parallel */ 到不同用户,并行起不来的问题
查看>>
oracle--用户,权限,角色的管理
查看>>
oracle00205报错,Oracle控制文件损坏报错场景
查看>>
Oracle10g EM乱码之快速解决
查看>>
Oracle10g下载地址--多平台下的32位和64位
查看>>