ホームページ  >  記事  >  バックエンド開発  >  Go でシングルトン パターンを実装するにはどうすればよいですか?

Go でシングルトン パターンを実装するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-12 05:46:01860ブラウズ

How to Implement the Singleton Pattern in Go?

Go でのシングルトン パターンの実装

オブジェクト指向プログラミングの領域では、シングルトン パターンは単一のオブジェクトの作成を強制することを目的としています。プログラムの存続期間全体にわたってクラスまたは型のインスタンスを維持します。 Go でこのパターンを実現する方法は次のとおりです。

プライベート変数とパブリック コンストラクターの使用:

このアプローチでは、プライベート変数とパブリック コンストラクターを使用して、 singleton:

package singleton

type single struct {
    O interface{}
}

var instantiated *single = nil

func New() *single {
    if instantiated == nil {
        instantiated = new(single)
    }
    return instantiated
}

single およびインスタンス化されたものをプライベートにすると、New 関数のみがシングルトンをインスタンス化できるようになります。

sync.Once を使用する:

スレッドの安全性を確保するために、sync.Once 型を利用して、同時環境であってもシングルトンが 1 回だけ初期化されるようにすることができます:

package singleton

import "sync"

type single struct {
    O interface{}
}

var instantiated *single
var once sync.Once

func New() *single {
    once.Do(func() {
        instantiated = &single{}
    })
    return instantiated
}

考慮事項:

シングルトン パターンは特定のシナリオでは便利ですが、潜在的な欠点を考慮し、代替アプローチを検討することが重要です。 Go のパッケージは本質的にシングルトンとして機能し、真のカプセル化とリソース管理を提供します。したがって、実装する前に、従来のシングルトン パターンが必要かどうかを慎重に評価してください。

以上がGo でシングルトン パターンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。