この記事では主にJavaシングルトンパターンの簡単な関連情報を詳しく紹介しますので、興味のある方は参考にしてください
1.コンセプト
シングルトンパターンは一般的に使用されるソフトウェア設計パターンです。そのコア構造には、シングルトン クラスと呼ばれる特別なクラスが 1 つだけ含まれています。シングルトン モードでは、システム内にクラスのインスタンスが 1 つだけ存在し、外部からそのインスタンスに簡単にアクセスできるようにすることができるため、インスタンス数の制御が容易になり、システム リソースが節約されます。特定のクラスのオブジェクトを 1 つだけシステム内に存在させたい場合は、シングルトン パターンが最適なソリューションです。私の意見では、シングルトンでは外部の世界がオブジェクトを作成することはできません。
1.1 概念分析
シングルトンの場合、上記の概念分析から、次の条件を満たす必要があります:
第一: シングルトン クラスにはシングルトン オブジェクトは 1 つだけ存在できます。
第二: シングルトン クラスは独自のを作成する必要があります。固有のインスタンス オブジェクト;
3 番目: このインスタンス オブジェクトは外部の世界からアクセスでき、外部の世界はそれ自体でオブジェクトを作成できません。
2. シングルトン モードの一般的なメソッドのいくつか
Java では、シングルトン モードは通常、遅延モード、ハングリー モード、および登録モードに分類されますが、登録モードは一般にあまり一般的ではないため、無視されがちです。もし著者が今日突然まとめたくなってネットで情報を検索していなかったら、私はこれに気付かなかったでしょう。コードはこのように掲載されており、以下で説明します。
2.1 ハングリースタイルのシングルトンクラス
package com.ygh.singleton; /** * 饿汉式单例类 * @author 夜孤寒 * @version 1.1.1 */ public class HungerSingleton { //将构造方法私有,外界类不能使用构造方法new对象 private HungerSingleton(){} //创建一个对象 private static final HungerSingleton lazySinleton=new HungerSingleton(); //设置实例获取方法,返回实例给调用者 public static HungerSingleton getInstance(){ return lazySinleton; } }
シングルトンが実装されているかどうかをテストするテストクラスを作成します:
package com.ygh.singleton; /** * 测试单例类 * * @author 夜孤寒 * @version 1.1.1 */ public class Test { public static void main(String[] args) { /* * 构造方法私有化,不能够使用下面方式new对象 */ //HungerSingleton hungerSingleton=new HungerSingleton(); //使用实例获取方法来获取对象 HungerSingleton h1=HungerSingleton.getInstance(); HungerSingleton h2=HungerSingleton.getInstance(); System.out.println(h1==h2);//true } }
上記からわかるように、このテストクラスの 2 つの参照は等しいです。つまり、2 つの参照は同じオブジェクトを指しており、シングルトン パターン標準に正確に準拠しています。ここでお腹の空いた中華の紹介は終わりです。
2.2 ハングリースタイルのシングルトンクラス
package com.ygh.singleton; /** * 懒汉式单例类 * @author 夜孤寒 * @version 1.1.1 */ public class LazySingleton { //将构造方法私有,外界类不能使用构造方法new对象 private LazySingleton(){} //创建一个对象,不为final private static LazySingleton lazySingleton=null; //设置实例获取方法,返回实例给调用者 public static LazySingleton getInstance(){ //当单例对象不存在,创建 if(lazySingleton==null){ lazySingleton=new LazySingleton(); } //返回 return lazySingleton; } }
テストクラス:
package com.ygh.singleton; /** * 测试单例类 * * @author 夜孤寒 * @version 1.1.1 */ public class Test { public static void main(String[] args) { /* * 构造方法私有化,不能够使用下面方式new对象 */ //LazySingleton lazySingleton=new LazySingleton(); //使用实例获取方法来获取对象 LazySingleton l1=LazySingleton.getInstance(); LazySingleton l2=LazySingleton.getInstance(); System.out.println(l1==l2);//true } }
上記からわかるように、このテストクラスの 2 つの参照は等しい。つまり、2 つの参照は、同じオブジェクトで、シングルトン パターン標準にも適合します。これで怠け者の紹介は終わりです。
2.3 レイジースタイルとハングリースタイルの違い
レイジースタイルは、オブジェクトがない場合にはシングルトンオブジェクトが作成されますが、オブジェクトがある場合にはオブジェクトは作成されません。言うのは簡単ですが、読者がさらに詳しく知りたい場合は、ブレークポイントを使用して Eclipse でテストし、LazySingleton クラスの if 中括弧内のコンテンツにブレークポイントを追加してから、デバッグを使用してそれを Test クラスで実行できます。 、最初にオブジェクトが作成されるが、2 回目にはオブジェクトが作成されないことを示すのは簡単です。
Hungry Chinese スタイルは、final キーワードを使用してオブジェクトを作成することによって実装されます。呼び出し元がインスタンス オブジェクトを必要とする場合、作成されたインスタンスは getInstance メソッドを通じて取得できます。
2.4 登録済みシングルトン クラス
著者は登録済みシングルトン クラスについてあまり詳しくありませんが、自分の学習と参考のためにインターネット上にコードを投稿しました。読者は自分で勉強するように求められます。
以上がJava のシングルトン パターンの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

javadevelopmentisnotentirelylylypratform-IndopentDuetoseveralfactors.1)jvmvariationsaffectperformanceandbehavioracrossdifferentos.2)nativeLibrariesviajniintroducePlatform-specificissues.3)giaiasystemsdifferbeTioneplateplatifflics.4)

Javaコードは、さまざまなプラットフォームで実行するときにパフォーマンスの違いがあります。 1)JVMの実装と最適化戦略は、OracleJDKやOpenJDKなどとは異なります。 2)メモリ管理やスレッドスケジューリングなどのオペレーティングシステムの特性もパフォーマンスに影響します。 3)適切なJVMを選択し、JVMパラメーターとコード最適化を調整することにより、パフォーマンスを改善できます。

java'splatformindepentedencehaslimitationsincludingporformanceoverhead、versioncompatibulisisues、changleSwithnativeLibraryIntegration、プラットフォーム固有の機能、およびjvminStallation/maintenation。

PlatformEndependEncealLowsProgramStorunonAnyPlatformWithOdification、whilecross-platformdevelopmentReadreessomeplatform-specificAdjustments.platformindependence、explifiedByjava、unableSiversAlexecutionButMayCompromperformance

jitcompalilationinjavaenhancesperformance whelemaintaining formindepence.1)itdynamicallyTrantesiNTODENATIVEMACHINECODEATRUNTIME、最適化されたコードを最適化すること、

javaispopularforsoss-platformdesktopapplicationsduetoits "writeonce、runaynay" philosophy.1)itusesbytecodatiTatrunnanyjvm-adipplatform.2)ライブラリリケンディンガンドジャヴァフククレアティック - ルルクリス

Javaでプラットフォーム固有のコードを作成する理由には、特定のオペレーティングシステム機能へのアクセス、特定のハードウェアとの対話、パフォーマンスの最適化が含まれます。 1)JNAまたはJNIを使用して、Windowsレジストリにアクセスします。 2)JNIを介してLinux固有のハードウェアドライバーと対話します。 3)金属を使用して、JNIを介してMacOSのゲームパフォーマンスを最適化します。それにもかかわらず、プラットフォーム固有のコードを書くことは、コードの移植性に影響を与え、複雑さを高め、パフォーマンスのオーバーヘッドとセキュリティのリスクをもたらす可能性があります。

Javaは、クラウドネイティブアプリケーション、マルチプラットフォームの展開、および言語間の相互運用性を通じて、プラットフォームの独立性をさらに強化します。 1)クラウドネイティブアプリケーションは、GraalvmとQuarkusを使用してスタートアップ速度を向上させます。 2)Javaは、埋め込みデバイス、モバイルデバイス、量子コンピューターに拡張されます。 3)Graalvmを通じて、JavaはPythonやJavaScriptなどの言語とシームレスに統合して、言語間の相互運用性を高めます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









