シングルトンパターンと一般的な書き方の分析(デザインパターン01)
クラスにインスタンスが 1 つだけあることを確認し、インスタンスへのグローバル アクセス ポイントを提供します。
——「デザインパターン」
シングルトンパターンの概念は非常に単純で、例として C# 言語を使用して、一般的なシングルトン記述方法の長所と短所をリストします。
1. 単純な実装
public sealed class Singleton { static Singleton instance = null; public void Show() { Console.WriteLine( "instance function"); } private Singleton() { } public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } return instance; } } }
コメント:
スレッドにとって安全ではありません
要件はシングルスレッドで満たされます
利点:
インスタンスはインスタンス内にあるため、プロパティ クラスが追加機能を使用できるようにメソッド内で内部的に作成されます
オブジェクトがインスタンスを必要とするまでインスタンス化は実行されません。このアプローチは「遅延インスタンス化」と呼ばれます。遅延インスタンス化により、アプリケーションの起動時にシングルトンの不必要なインスタンス化が回避されます。
2. スレッドの安全性
public sealed class Singleton { static Singleton instance = null; private static readonly object padlock = new object(); private Singleton() { } public static Singleton Instance { get { lock (padlock) { if (instance == null) { instance = new Singleton(); } } return instance; } } }
コメント:
同じのみ1 つのスレッドはプログラムのロックされている部分に入ることができます
オブジェクトインスタンスは最初に入ったスレッドによって作成されます
後のスレッドは入ったときにオブジェクトインスタンスを再度作成しません (instance == null) +
スレッドは毎回ロックされません
インスタンスは許可されます 初期化オブジェクトが最初にアクセスされるまで遅延されます
4. 静的初期化
public sealed class Singleton { static Singleton instance = null; private static readonly object padlock = new object(); private Singleton() { } public static Singleton Instance { get { if (instance == null) { lock (padlock) { if (instance == null) { instance = new Singleton(); } } } return instance; } } }
コメント:
共通言語ランタイム上の DS ハンドル変数の初期化
パブリック静的プロパティは、インスタンスにアクセスするためのグローバル アクセス ポイントを提供します
インスタンス化メカニズム (.NET によって実装される) に対する制御が少なくなります
静的初期化は、.NET でシングルトンを実装するための推奨される方法です
静的コンストラクターにはアクセス修飾子がありません。C# は自動的にプライベートとしてマークする必要がある理由は、開発者がそれを呼び出すことを防ぐためであり、その呼び出しは常に です。 CLR の責任。 5 、遅延初期化
public sealed class Singleton { private static readonly Singleton instance = null; static Singleton() { instance = new Singleton(); } private Singleton() { } public static Singleton Instance { get { return instance; } } }
コメント:
初期化作業は Nested クラスの静的メンバーによって完了されるため、遅延初期化が実現されます。
クラスがインスタンス化されるとき、または静的メンバーが呼び出されるときに静的関数が呼び出されるため、
と .net フレームワークは静的コンストラクターを呼び出して静的メンバー変数を初期化します
したがって、4 番目のメソッドに従って記述した場合、Hello メソッドを呼び出すと、シングルトン インスタンスがインスタンス化されます。これは、私たちが望むものではありません。他に何か。
注:
1. Singleton パターンのインスタンス コンストラクターを protected に設定して、サブクラスの派生を許可できます。
2. シングルトン モードは、通常、ICloneable インターフェイスをサポートしません。これは、シングルトン モードの本来の目的に反して、複数のオブジェクト インスタンスが生成される可能性があるためです。
3. シングルトン モードは通常、シリアル化をサポートしません。これは、複数のオブジェクト インスタンスが発生する可能性もあり、これもシングルトン モードの本来の目的に反するからです。
4. Singletom モードでは、オブジェクトの作成の管理のみが考慮され、オブジェクトの破棄の管理は考慮されません。ガベージ コレクションとオブジェクトのオーバーヘッドをサポートするプラットフォームに関しては、通常、オブジェクトの破棄について特別な管理を行う必要はありません。
概要:
1. シングルトン パターンは、クラスの作成を改善するのではなく、制限します。
2. Singleton パターンの理解と拡張の核心は、「new を使用してクラスのコンストラクターに対するユーザーの任意の呼び出しを制御する方法」です。
3. シングルトンをいくつかのインスタンスを持つように簡単に変更できます。これは許可されており、意味があります。
上記は、単一ケースパターンと一般的な文章分析(デザインパターン01)の内容です。その他の関連コンテンツについては、PHP中国語Webサイト(www.php.cn)にご注意ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JS シングルトン パターンは、クラスのインスタンスが 1 つだけであることを保証する、一般的に使用される設計パターンです。このモードは主に、名前の競合や繰り返しの読み込みを避けるためにグローバル変数を管理するために使用され、メモリ使用量を削減し、コードの保守性とスケーラビリティを向上させることもできます。

シングルトン パターン: 関数のオーバーロードを通じて、シングルトン インスタンスにさまざまなパラメーターを提供します。ファクトリ パターン: 関数の書き換えを通じてさまざまなタイプのオブジェクトを作成し、作成プロセスを特定の製品クラスから切り離します。

PHP におけるシングルトン モードのスレッド セーフティの問題について考える PHP プログラミングでは、シングルトン モードは一般的に使用されるデザイン パターンであり、クラスのインスタンスが 1 つだけであることを保証し、このインスタンスにアクセスするためのグローバル アクセス ポイントを提供します。ただし、マルチスレッド環境でシングルトン パターンを使用する場合は、スレッドの安全性の問題を考慮する必要があります。シングルトン パターンの最も基本的な実装には、プライベート コンストラクター、プライベート静的変数、およびパブリック静的メソッドが含まれます。具体的なコードは次のとおりです。

ソフトウェア開発では、複数のオブジェクトが同じリソースにアクセスする必要がある状況によく遭遇します。リソースの競合を回避し、プログラムの効率を向上させるために、デザイン パターンを使用できます。中でも、シングルトン パターンはオブジェクトの作成によく使用される方法で、クラスのインスタンスが 1 つだけであることを保証し、グローバル アクセスを提供します。この記事では、PHP を使用してシングルトン パターンを実装する方法を紹介し、いくつかのベスト プラクティスの提案を提供します。 1. シングルトン モードとは何ですか? シングルトン モードは、オブジェクトを作成するためによく使用される方法で、その特徴は、クラスのインスタンスが 1 つだけであることを確認し、

シングルトン パターンでは、クラスにインスタンスが 1 つだけ存在することが保証され、グローバル アクセス ポイントが提供されます。これにより、アプリケーション内で使用できるオブジェクトが 1 つだけになり、制御されるようになります。シングルトン パターンは、クラスのオブジェクトをインスタンス化せずに、その一意のオブジェクトに直接アクセスする方法を提供します。例<?php classdatabase{ publicstatic$connection; privatefunc

はじめに PHP デザイン パターンは、ソフトウェア開発における一般的な課題に対する実証済みのソリューションのセットです。これらのパターンに従うことで、開発者はエレガントで堅牢かつ保守しやすいコードを作成できます。これらは、開発者が SOLID 原則 (単一責任、オープン/クローズ、リスコフ置換、インターフェイスの分離、依存関係の反転) に従うのに役立ち、それによってコードの可読性、保守性、拡張性が向上します。デザイン パターンの種類 さまざまなデザイン パターンがあり、それぞれに独自の目的と利点があります。最も一般的に使用される PHP 設計パターンの一部を次に示します。 シングルトン パターン: クラスにインスタンスが 1 つだけあることを保証し、このインスタンスにグローバルにアクセスする方法を提供します。ファクトリ パターン: 正確なクラスを指定せずにオブジェクトを作成します。これにより、開発者は条件付きで次のことを行うことができます。

PHP フレームワークにおけるシングルトン モードの拡張とカスタマイズ [はじめに] シングルトン モードは一般的な設計パターンであり、クラスがアプリケーション全体で 1 回だけインスタンス化されることが保証されます。 PHP 開発では、特にフレームワークの開発と拡張において、シングルトン パターンが広く使用されています。この記事では、PHP フレームワークでシングルトン パターンを拡張およびカスタマイズする方法を紹介し、具体的なコード例を示します。 [シングルトン パターンとは] シングルトン パターンとは、クラスがオブジェクト インスタンスを 1 つだけ持つことができ、外部から使用するためのグローバル アクセス ポイントを提供することを意味します。 PHP 開発では、パス

PHP 分散システムにおけるシングルトン モードのアプリケーション シナリオとスレッド セーフティ プロセス はじめに: インターネットの急速な発展に伴い、分散システムは現代のソフトウェア開発においてホットなトピックとなっています。分散システムでは、スレッドの安全性は常に重要な問題です。 PHP 開発では、シングルトン パターンは一般的に使用される設計パターンであり、リソース共有とスレッド セーフの問題を効果的に解決できます。この記事では、PHP 分散システムにおけるシングルトン モードのアプリケーション シナリオとスレッド セーフティ プロセスに焦点を当て、具体的なコード例を示します。 1. シングルトンモード
