2016年10月29日もっとも頻繁に使われるデザインパターンといえば、Singletonパターンでしょう。このSingletonパターンには、「インスタンスが1つしか作られないことを保証する」という意味が含まれます。開発者が、「このクラスのインスタンスは1つしか作らないように注意!!」とコメントを書いておけば、引継ぎを受けた開発者はそのように注意するでしょう。「作らないように注意する」と「作れない」では大きな差があります。実装方法はとても簡潔で理解しやすい内容なので、特徴やクラス図、Javaでサンプルコードを動作させ、最後にSingletonパターンについての注意点も確認していきましょう。見出しでも記載したように「インスタンスが1つしか作られないことを保証する」というデザインパターン。ソースコードでは以下のような特徴があります。同じ型のインスタンスがprivateなクラス変数として定義される。コンストラクタがprivateである。インスタンスを返すクラス関数が定義されている。インスタンスを取得する際にはnewではなく、「インスタンスを返すクラス関数」をコールし、使用することになります。一般的には、[getInstance()]メソッドとして定義されていることが多いです。クラス図singleton、getInstance()についている下線はその要素がstatic(クラスフィールド、クラスメソッド)であることを示します。]はその要素の可視性を示します。]はpackage)イテレータパターンやアダプターパターンと比べても簡単に見えます。Singletonパターンの実装では実際にソースコードにしていきます。]も同じインスタンスを参照していることが分かります。インスタンスは1つしか作られないと保証されていることになります。]クラスがロードされた際に、クラスフィールドであるsingletonインスタンスを作成し、getInstanceで常にこのインスタンスが返るようになっているためです。「作らないように注意する」ではなく、「作れない」。いった制限をクラスに加えることはとても大切です。ここで「getInstanceメソッドを使用することでコード上のどこであっても同一のインスタンスにアクセスできる。」と考えると、グローバル変数のように動作させることができてしまいます。グローバル変数が持つ問題点も同様に持つことになります。そのため、インスタンスが持つデータを変更するような処理を加えてしまうと「どこで変更されたのか分からない。」といった状態になってしまうこともあります。この点には実装時に特に注意を払う必要があることは覚えておいてください。まとめSingletonパターンは大変便利ですが、注意などにも書いたように一定の問題もはらんでいます。利用すれば、とても力を発揮するデザインパターンなので、作成するオブジェクトについて分析しSingletonパターンが適応できないか、どんなデータをもつSingletonなのかをよく検討する必要があります。スポンサーリンクスポンサーリンクTwitterFacebookGoogle+PocketB!はてブLINE-デザインパターン-デザインパターン執筆者:piggy関連記事アルゴリズムを定義してロジックはサブクラスに任せるTemplateパターン今回紹介するTemplateパターンは比較的理解しやすいデザインパターンです。Iteratorパターンデザインパターンの中でももっとも理解がしやすく、また利用価値も高いものでIteratorパターンがあります。Iteratorパターンは数え上げのためのパターンです。Adapterパターン実際の業務で新しいコードを1から書き始めるなんてことは滅多にありません。基本は既にあるコードを追加・修正しバージョンアップを重ねるという業務がほとんどですね。車に、缶詰、飲み物などいろいろな工場があります。...PREVオブジェクトの生成に一工夫!FactoryMethodパターンNEXTC++でインターフェイスを作成しよう。