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 サイトの他の関連記事を参照してください。