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

营销型网站建设方案佛山网站优化美姿姿seo

营销型网站建设方案,佛山网站优化美姿姿seo,平面设计师灵感网站,重庆网站建设 微客巴巴目录 单例模式#xff08;Singleton Pattern#xff09; 优缺点 使用场景 饿汉式和懒汉式单例模式 单例模式#xff08;Singleton Pattern#xff09; 单例模式#xff08;Singleton Pattern#xff09;是一个类只允许创建一个对象#xff08;或者实例#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 fmttype 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 (fmtsync )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://www.huolong8.cn/news/3052/

相关文章:

  • 有孩子做的网站郑州电子商务网站建设
  • 用什么软件写网站行政还要负责网站建设新媒体吗
  • 网站黑链检测怎么提高关键词搜索排名
  • 阿里云是不是做网站的求制作网站
  • 沧州市网站制作搜索引擎优化的重要性
  • 做类似淘宝网站怎么做的招代理的网站建设公司
  • 微信官方网站网址h5游戏平台搭建
  • php抽奖网站源码外链生成器
  • 高性能网站建设进阶指南重庆梁平网站建设哪家便宜
  • 人与马做的网站莱州房产网房产信息
  • h5网站有哪些网站设计应该怎么做
  • 做网站定金要多少专业的国内网站建设公司
  • 百度做网站的费用帮客户做网站
  • 东莞石碣网站建设我要表白网站在线制作
  • 做soho要不要注册网站赣州行业网站建设
  • 济南网站制作wordpress主题 制作教程
  • 做百度手机网站湛江建站价格
  • 淄博网站建设网宽聚美优品网站建设
  • wordpress数据库怎么连接数据库霞浦县网站seo优化排名
  • 凡科网站模板下载flash网站怎么做音乐停止
  • 网站建设怎么解析域名做国外lead应该做什么网站
  • 专业做财务公司网站carousel wordpress
  • 嘉峪关建设局网站20m带宽做网站够用吗
  • 网站开发所需经费手机大全商城
  • ui做标注的网站网站建设的核心是
  • 怎样成立一个网站东莞企业建站申请多少钱
  • 石家庄服务大型建站如何对网站做渗透
  • 沈阳沈阳建设工程信息网站深圳高端网页设计公司
  • 巴音郭楞蒙古自治州建设局网站外贸如何选择wordpress主题
  • 建设网站方向学做网站的书哪些好