シングルトンパターンの詳細な紹介
まず、シングルトン パターンの定義を見てみましょう。
シングルトン パターンは、Java で最も単純な設計パターンの 1 つであり、創造的なものです。オブジェクトを作成するための最良の方法を提供します。シングルトン パターンには、単一のオブジェクトのみが作成されるようにしながら、独自のオブジェクトの作成を担当する単一のクラスが含まれます。
(推奨チュートリアル: java 入門チュートリアル)
メモリ内にオブジェクトが 1 つだけ存在するようにするには、メモリ消費の原因となるオブジェクトの頻繁な作成を避け、そのため、このオブジェクトを呼び出す必要がある場合は常に、このシングルトン オブジェクトがすべて使用されます。
次に、シングルトン パターンのタイプを見てみましょう:
1. 遅延スタイル
遅延スタイルとは、シングルトンが必要な場合にのみ作成されることを意味します。
遅延スタイルのシングルトン パターンの実装:
public class Singleton { private static Singleton singleton; private Singleton(){ } public static Singleton getInstance(){ if (singleton == null) { singleton = new Singleton(); } return singleton; }
遅延スタイルのシングルトンの実装には問題があります。つまり、オブジェクトが 1 つだけ作成されるようにする方法です。 2 つ以上のスレッドが同時にシングルトンが空であると判断した場合、複数のオブジェクトが作成されます。したがって、スレッドの安全性の問題を解決する必要があります。
スレッド セーフというと思い浮かぶのはロックですが、ロックとはメソッドやクラス オブジェクトをロックすることに他なりません。
//在方法上加锁 public class Singleton { private static Singleton singleton; private Singleton(){} public static synchronized Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; } } //在类对象上加锁 public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance() { synchronized(Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } return singleton; } }
これら 2 つのメソッドは、シングルトン オブジェクトを同時に作成するマルチスレッドの問題を解決できますが、オブジェクトを取得するたびに最初にロックを取得する必要があり、同時実行パフォーマンスが低くなります。したがって、依然として最適化が必要です。最適化の目標は、インスタンス化されたオブジェクトがない場合はロックして作成し、インスタンス化されたオブジェクトがある場合は直接返すことです。
(学習ビデオの推奨: java コース)
メソッドをロックするには、インスタンス化されたオブジェクトの有無に関係なく、ロックが必要です。したがって、最適化する必要があるのは、クラス オブジェクトをロックすることです。
//DCL单例模式(Double Check + Lock) public class Singleton { //volatite关键词防止指令重排序,下文介绍 private static volatile Singleton singleton; private Singleton(){} public static Singleton getInstance() { //如果singleton不为空,则直接返回对象,若多个线程发现singleton为空,则进入分支 if (singleton == null) { //多个线程同时争抢一个锁,只有一个线程能成功,其他线程需等待 synchronized(Singleton.class) { //争抢到锁的线程需再次判断singleton是否为空,因为有可能被上个线程实例化了 //若不为空则实例化,后续线程再进入的时候则直接返回该对象 //对于之后所有进入该方法的线程则无需获取锁,直接返回对象 if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
命令の並べ替えを防ぐために、上記のコードに volatile キーワードが追加されています。
2. ハングリー チャイニーズ スタイル
ハングリー チャイニーズ スタイルとは、クラスのロード時にシングルトン オブジェクトが作成されることを意味します。
Hungry Chinese スタイルのシングルトン パターンの実装:
public class Singleton { private static final Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; }
概要:
Lazy Man スタイル: 必要な場合にのみオブジェクトをインスタンス化する開発中、メモリ要件が高い場合、マルチスレッド環境で遅延スタイルを使用する場合は、DCL シングルトン モードを使用する必要があります。DCL シングルトン モードを使用すると、同時実行セキュリティとパフォーマンスの低下の問題が解決されます。volatile キーワードを追加すると、次のような原因で発生する NPE 例外も防ぐことができます。命令の並べ替え。
Hungry Chinese スタイル: クラスのロード時にオブジェクトはすでにインスタンス化されています。メモリ要件が高くない場合は、Hungry Chinese スタイルを使用してください。シンプルでエラーが発生しにくく、必要な機能がありません。同時実行のセキュリティとパフォーマンスの問題。
以上がシングルトンパターンの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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. シングルトンモード
