设计模式:惰性初始化模式讲解以及Go实现_惰性初始模式,2024年最新从入门到真香

34 阅读2分钟

uses

LazyInitializedObject

-static instance: LazyInitializedObject

-LazyInitializedObject()

+static getInstance()

Client

-LazyInitializedObject obj

+doSomething()

流程图

#mermaid-svg-v67kfAMbYHqdmXtM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-v67kfAMbYHqdmXtM .error-icon{fill:#552222;}#mermaid-svg-v67kfAMbYHqdmXtM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-v67kfAMbYHqdmXtM .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-v67kfAMbYHqdmXtM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-v67kfAMbYHqdmXtM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-v67kfAMbYHqdmXtM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-v67kfAMbYHqdmXtM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-v67kfAMbYHqdmXtM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-v67kfAMbYHqdmXtM .marker.cross{stroke:#333333;}#mermaid-svg-v67kfAMbYHqdmXtM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-v67kfAMbYHqdmXtM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-v67kfAMbYHqdmXtM .cluster-label text{fill:#333;}#mermaid-svg-v67kfAMbYHqdmXtM .cluster-label span{color:#333;}#mermaid-svg-v67kfAMbYHqdmXtM .label text,#mermaid-svg-v67kfAMbYHqdmXtM span{fill:#333;color:#333;}#mermaid-svg-v67kfAMbYHqdmXtM .node rect,#mermaid-svg-v67kfAMbYHqdmXtM .node circle,#mermaid-svg-v67kfAMbYHqdmXtM .node ellipse,#mermaid-svg-v67kfAMbYHqdmXtM .node polygon,#mermaid-svg-v67kfAMbYHqdmXtM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-v67kfAMbYHqdmXtM .node .label{text-align:center;}#mermaid-svg-v67kfAMbYHqdmXtM .node.clickable{cursor:pointer;}#mermaid-svg-v67kfAMbYHqdmXtM .arrowheadPath{fill:#333333;}#mermaid-svg-v67kfAMbYHqdmXtM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-v67kfAMbYHqdmXtM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-v67kfAMbYHqdmXtM .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-v67kfAMbYHqdmXtM .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-v67kfAMbYHqdmXtM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-v67kfAMbYHqdmXtM .cluster text{fill:#333;}#mermaid-svg-v67kfAMbYHqdmXtM .cluster span{color:#333;}#mermaid-svg-v67kfAMbYHqdmXtM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-v67kfAMbYHqdmXtM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

请求对象/资源

存在

不存在

开始

检查对象是否存在

返回现有对象

创建并初始化对象

结束

惰性初始化的使用场景

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!