IT铁人DAY 8-Singleton 单例模式

Design Pattern大致分成三种模式:

  • Creational Patterns(创建型模式)
  • Structural Patterns(结构型模式)
  • Behavioral Patterns(行为型模式)

  今天要讲的是创建模式中的其中一种Pattern,Singleton单例模式。


问题情境

  当我们程序对某些共享资源做存取的动作的时候,像是资料库,我们就会去控制这个类别就只能有一个实例,避免一些不必要的资源浪费。

  假设今天你创建了一个物件,过了一段时间以後又再创了一个新的物件,但因为之前已经又创过了这个物件,所以存取的物件会是已经创好的物件,而不是新创的物件。

  上面这段话看起来很饶舌,但仔细思考以後,就会了解它的细腻之处了!

Class Diagram

https://ithelp.ithome.com.tw/upload/images/20210923/201407434zQFRNeQ1B.png

Skeleton Code

class Singleton {
		private static Singleton instance;

		private Singleton();

		public static Singleton getInstance() {
				if (instance == null) {
						instance = new Singleton();
				}
				return instance;
		}
}

  当需要创建Singleton物件的时候,就必须改成用getInstance()的方法来将类别实例化,确保此一类别只有一个实例,而不是用原本Singleton的建构子去创建。这样一来Singleton这个物件只会在第一次的呼叫方法的时候才被初始化。


除此之外,也欢迎大家走走逛逛关於我们团队夥伴的文章

lu23770127 - SASS 基础初学三十天

10u1 - 糟了!是世界奇观!

juck30808 - Python - 数位行销分析与 Youtube API 教学

SiQing47 - 前端?後端?你早晚都要全端的,何不从现在开始?


<<:  <Day8> Contract — 取得股票(Stock)资讯

>>:  day23 : TIDB on K8S (下)

Swift纯Code之旅 Day29. 「新增闹钟功能(2) - 如何使用Delegate传值」

前言 昨天我们已经将资料打包完成了,离完成闹钟功能只差一点点了, 只要把资料回传到首页,就可以实现新...

Day 23 -资料库应用小程序 资料库设计(系统需求分析)

完善的资料库能够有效地存储数据,提供最新、最精确的资讯,满足使用者的应用需求,因此正确的资料库结构设...

Day21 Open-Match 端点暴露

今天会说明一下,实务上如何将 Open-Match svc endpoints,从 kubernet...

Day26 | 实现Extension内的MVVM架构

大家好,我是韦恩,今天是铁人赛的二十六天,让我们来设计extension中的MVVM架构吧! MVV...

Day 10:144. Binary Tree Preorder Traversal

今日题目 题目连结:144. Binary Tree Preorder Traversal 题目主题...