Java デザインパターン

[Java]デザインパターン1 Singleton

更新日:

Javaに限ったことでは無いですが、オブジェクト指向言語にて、プログラムを動かす時には、様々なインスタンスが生成されます。

しかし、特定のクラスのインスタンスは必ず1つしか生成したくないというケースがあります。具体的には、システム全体を制御するクラスや画面を制御するクラスなどです。

プログラマーが、

「必ずこのクラスのインスタンスは必ず1つしか生成するなよ? 絶対だぞ??」 

と肝に命じてプログラミングを行えば、複数インスタンスが生成されることは無さそうですが、様々なプログラマーが開発を行うようなプロジェクトでは、そうゆう訳にはいきません。(振りじゃないぞ?)

そんな時は、デザインパターンのうちの1つ、

『Singleton(シングルトン)パターン』

という、インスタンスが1個しか存在しないパターンを駆使したプログラミングを行います。

ちなみに、デザインパターンというのは、プログラムやライブラリのことではなく、どこかの偉い人が考えた、とても効率の良い設計パターンのことです。

参考文献 デザインパターン(Wikipedia):

https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)

 

Singletonクラス

説明)インスタンスが1つしか存在しないクラスです。

SingletonMainクラス

説明) 動作用のテストクラスです。

 

Singletonクラスは、Singleton型のフィールド singleton を保持しており、getInstanceメソッドにて、singleton を戻り値として渡します。

ここでミソなのが、 singleton が static で宣言されていることです。Javaでは、 static が付いたフィールド、クラスは静的フィールド、静的クラスとして扱われ、プログラム実行中は存在し続けます。

そして、getInstance メソッドでは、必ず静的フィールドsingleton を返却。つまり、同一のインスタンスが返却しています。

SingletonMainクラスを実行した際、インスタンスの生成を2回(5、6行目)試みていますが、インスタンス同士を比較した際、同一インスタンスであるため(11行目)、必ずいつも同一の値となります。

-Java, デザインパターン

Copyright© FREE-CREATORS , 2020 All Rights Reserved.