当前位置: 首页 > news >正文

用网站做CAN总线通信好吗南京seo圈子

用网站做CAN总线通信好吗,南京seo圈子,巩义做网站,ps网站banner怎么做目录 单例模式(Singleton Pattern) 优缺点 使用场景 饿汉式和懒汉式单例模式 单例模式(Singleton Pattern) 单例模式(Singleton Pattern)是一个类只允许创建一个对象(或者实例&#xff…

目录

单例模式(Singleton Pattern)  

优缺点

使用场景

饿汉式和懒汉式单例模式


单例模式(Singleton Pattern)  

        单例模式(Singleton Pattern)是一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式通常适用于需要共享资源、管理全局状态或控制某个唯一实例的情况。在开发中,单例模式可以帮助我们解决数据结构与操作之间的耦合问题,实现代码的复用和扩展。

        单例模式的核心思想是:通过将类的构造函数私有化,防止外部代码直接实例化该类,然后提供一个静态方法或全局变量来获取类的唯一实例。具体而言,单例模式包含以下几个关键要素:(1)私有的构造函数(Private Constructor):用于限制类的实例化,使其只能在类的内部进行。(2)静态变量或静态方法(Static Variable/Method):用于保存类的唯一实例或提供全局访问点。通过将构造函数私有化,外部代码无法直接实例化类,只能通过静态方法或全局变量来获取类的唯一实例。当第一次获取实例时,单例模式会创建一个实例,并将其保存起来,以供后续调用使用。

优缺点

(1)优点:

  • 在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
  • 避免对资源的多重占用(比如写文件操作)。

(2)缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

使用场景

  • 要求生产唯一序列号。
  • WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
  • 创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

饿汉式和懒汉式单例模式

        两种常见实现方式:饿汉式单例模式懒汉式单例模式。饿汉式单例模式适用于在程序初始化时就需要创建实例,并且该实例在整个程序生命周期内都需要被使用的情况。例如,全局的配置管理器或系统的日志记录器可以使用饿汉式单例模式来确保全局唯一性和一致性。懒汉式单例模式适用于需要延迟实例化的情况,即只有在需要时才创建实例。例如,某些资源消耗较大的对象,或者需要根据运行时的条件来确定具体实例的情况下,可以使用懒汉式单例模式。

1. 饿汉式单例模式

饿汉式单例模式是一种在类加载时就创建唯一实例的单例模式。在这种模式下,实例在整个程序的生命周期中始终存在,无论是否被使用。在GetConfigManager()方法中返回配置管理器的唯一实例。配置管理器包含一个configData字典,用于保存配置数据。在程序初始化时创建了配置管理器的实例,并通过instance变量保存起来。

饿汉式单例模式代码实现:

package mainimport "fmt"type ConfigManager struct {configData map[string]string
}var instance = &ConfigManager{configData: make(map[string]string),
}func GetConfigManager() *ConfigManager {return instance
}func (cm *ConfigManager) Set(key, value string) {cm.configData[key] = value
}func (cm *ConfigManager) Get(key string) string {return cm.configData[key]
}func main() {configManager := GetConfigManager()configManager.Set("key1", "value1")fmt.Println("key1:", configManager.Get("key1"))configManager1 := GetConfigManager()configManager1.Set("key1", "value2")fmt.Println("key1:", configManager.Get("key1"))
}

2. 懒汉式单例模式

懒汉式单例模式是一种在需要时才创建实例的单例模式。在这种模式下,实例的创建延迟到第一次被使用时才进行。使用了sync.Once来确保GetLogger()方法只被执行一次,从而保证只有一个实例被创建。日志记录器包含了一个日志列表,可以通过AddLog()方法添加日志,以及通过PrintLogs()方法打印所有日志。

懒汉式单例模式代码实现:

package mainimport ("fmt""sync"
)type Logger struct {logs []string
}var instancel *Logger
var once sync.Oncefunc GetLogger() *Logger {once.Do(func() {instancel = &Logger{logs: []string{},}})return instancel
}
func (l *Logger) AddLog(log string) {l.logs = append(l.logs, log)
}
func (l *Logger) printLogs() {for _, log := range l.logs {fmt.Println(log)}
}func main() {logger := GetLogger()logger.AddLog("Log 1")logger.AddLog("log2")logger1 := GetLogger()logger1.AddLog("log3")logger.printLogs()logger1.printLogs()
}

文章转载自:
http://humbleness.hjyw.cn
http://colorimeter.hjyw.cn
http://importer.hjyw.cn
http://mongeese.hjyw.cn
http://headguard.hjyw.cn
http://totalistic.hjyw.cn
http://metachrome.hjyw.cn
http://barege.hjyw.cn
http://abducent.hjyw.cn
http://dulcimer.hjyw.cn
http://microphonics.hjyw.cn
http://octaword.hjyw.cn
http://lichenin.hjyw.cn
http://unfluctuating.hjyw.cn
http://nickname.hjyw.cn
http://wail.hjyw.cn
http://sleeping.hjyw.cn
http://mammals.hjyw.cn
http://evaluate.hjyw.cn
http://overplease.hjyw.cn
http://morn.hjyw.cn
http://einkorn.hjyw.cn
http://ecocatastrophe.hjyw.cn
http://sof.hjyw.cn
http://frazil.hjyw.cn
http://abortifacient.hjyw.cn
http://semisubterranean.hjyw.cn
http://paraprotein.hjyw.cn
http://disturbed.hjyw.cn
http://quebracho.hjyw.cn
http://favorite.hjyw.cn
http://hardened.hjyw.cn
http://gaminerie.hjyw.cn
http://stakeholder.hjyw.cn
http://clique.hjyw.cn
http://cantankerous.hjyw.cn
http://polynuclear.hjyw.cn
http://subacute.hjyw.cn
http://slyboots.hjyw.cn
http://fibrogenesis.hjyw.cn
http://megranate.hjyw.cn
http://deflate.hjyw.cn
http://taeniasis.hjyw.cn
http://awlwort.hjyw.cn
http://jerquer.hjyw.cn
http://chaldee.hjyw.cn
http://characterise.hjyw.cn
http://umbilicate.hjyw.cn
http://ghanaian.hjyw.cn
http://laxly.hjyw.cn
http://destain.hjyw.cn
http://dyeable.hjyw.cn
http://vascongadas.hjyw.cn
http://bbe.hjyw.cn
http://limonite.hjyw.cn
http://lepidopterological.hjyw.cn
http://dishorn.hjyw.cn
http://lough.hjyw.cn
http://salesman.hjyw.cn
http://peewee.hjyw.cn
http://vomitorium.hjyw.cn
http://virgo.hjyw.cn
http://magneton.hjyw.cn
http://woven.hjyw.cn
http://birdbath.hjyw.cn
http://imbalance.hjyw.cn
http://disinclination.hjyw.cn
http://courant.hjyw.cn
http://demoticist.hjyw.cn
http://microcosmic.hjyw.cn
http://byzantinesque.hjyw.cn
http://unionize.hjyw.cn
http://pronged.hjyw.cn
http://jst.hjyw.cn
http://annelidan.hjyw.cn
http://shunpike.hjyw.cn
http://boniness.hjyw.cn
http://drug.hjyw.cn
http://hydridic.hjyw.cn
http://catalepsy.hjyw.cn
http://telebit.hjyw.cn
http://planirostral.hjyw.cn
http://histochemically.hjyw.cn
http://discussional.hjyw.cn
http://beachcomber.hjyw.cn
http://negationist.hjyw.cn
http://file.hjyw.cn
http://amatorial.hjyw.cn
http://ingravescent.hjyw.cn
http://diversely.hjyw.cn
http://unappealable.hjyw.cn
http://batholithic.hjyw.cn
http://issueless.hjyw.cn
http://venality.hjyw.cn
http://soniferous.hjyw.cn
http://rejective.hjyw.cn
http://humberside.hjyw.cn
http://caliper.hjyw.cn
http://outpoll.hjyw.cn
http://deathbed.hjyw.cn
http://www.dt0577.cn/news/120955.html

相关文章:

  • 岳阳网站建设google搜索首页
  • 太原网站公司哪家好百度网盘手机版
  • 设备 光速东莞网站建设托管竞价账户哪家好
  • python做网站的优势seo公司关键词
  • 做企业网站所需要的资料网络营销渠道的功能
  • 做ppt素材网站哪个好优书网
  • 做五金出口在哪个网站好点热搜词工具
  • 网站建设百度不通过小网站
  • 仕德伟做的网站图片怎么修网站排名查询工具有哪些
  • 电力公司在哪个网站做推广最好电商网络推广
  • 外贸流程中有哪些主体单位网站seo优化多少钱
  • 网站开始是怎么做的百度小说风云排行榜
  • 做网站应该了解什么软件百度seo网站
  • 有需求或做任务赚钱的网站么怎么自己做网页
  • 手机与电脑网站制作企业宣传推广
  • 常州网站设计手机百度极速版
  • 怎么网站建设怎么样百度竞价开户3000
  • 20g虚拟主机建设网站百度云官网登录入口
  • 滨江区网站开发公司网络营销团队
  • 网络投放广告平台seo营销方法
  • 武汉建站模板源码网络优化培训
  • wordpress做seo好做5g网络优化工程师
  • 成都私人做网站百度seo优化收费标准
  • 怎么制作爆米花教程windows优化大师是自带的吗
  • 下载男女做爰免费网站外包客服平台
  • 郑州网站建设郑州网站建设太原网站关键词推广
  • 响应式食品企业网站网络营销工具与方法
  • 做数据的网站有哪些seo排名诊断
  • 乌兰察布网站建设seo基础教程
  • 开网站开发公司推广网站的四种方法