GoFTweet最近PHPで製造を行っていてもよく耳にするようになった依存関係やインスタンス化などオブジェクト指向の用語ですが、オブジェクト指向の概念(5原則など)を学ぶのではなく手っ取り早く実際にオブジェクト指向を使って考えられたデザインパターンに触れてみましょう。デザインパターンと言ってもいろいろあるんですが、今回は【オブジェクト指向における再利用のためのデザインパターン(ソフトバンクパブリッシング刊】で有名なGoFのデザインパターンを取り上げます。GoFって何?って人はGoFでググってください。GoFに付いてはいたる所で説明されているので割愛します。GoFのデザインパターンとはオブジェクト指向言語で再利用できる汎用的な設計パターンの事です。ここで言う設計とはクラス設計の事を言います。クラス設計を行う場合毎回と言っていいほど役割や機能をどのクラスのどんなメソッドに持たせるか悩む事があるんじゃないでしょうか?そんな時、ある程度形になったクラス設計のパターンの中から必要に応じて選択していけば効率的にクラス設計が行えるのではないでしょうか。このクラス設計のパターンがデザインパターンと呼ばれている物です。デザインパターンを選択する方法はいろいろあると思いますが、私がパターンを選択する場合以下の3点で判断します。1.目的があっているか(どんなプログラムのための物なのか)2.効果(そのパターンに従うとどんなメリットがあるか)3.背景(自分が今どんな問題に直面しているか)この3つのポイント、デザインパターンを理解する上でこのポイントと名前さえ覚えればパターンを理解出来ていると言っても言いぐらい重要な要素になります。GoFのデザインパターンは23個あるので、今日を含めても23回はネタが切れないなんていいブログネタなんでしょう。コードを書いていきたいと思います。おおこれ使えるかもってパターンがあったら実際にデザインパターンを考案したGoFが書いた【オブジェクト指向における再利用のためのデザインパターン(ソフトバンクパブリッシング刊】を読んでみてください(Blogではこんなパターンがあるよを目的に書くのでかなり浅い内容になります)。手始めに一番簡単なSingletonパターンを紹介します。意外とGoFのデザインパターンって知らずに使っている人が多いようなのであえて今日はSingletonです。普通のクラスではnewすればするほどインスタンスが出来ますが、たまに1回だけインスタンス化したらそれ以上インスタンス化をしたくない場合があります。コードを書くときに1回だけnewするようにすればいいじゃんって思えますが、マルチスレッドの場合どのクラスがまたはどのクラスのインスタンスがnewするのかを制御しようと思った時に結構めんどくさくないですか?だって一番最初に呼ばれるインスタンスを特定しなくちゃいけないんですよ。効果インスタンス化されているか、されてないかをsupplierは意識する必要がない。※supplierとはは呼び出し元のクラスです。}}javaの場合定数の初期化は一度しか行われないのが保障されているので必ず一度しかインスタンス化はおこなわれないです。コンストラクターが呼び出せてしまうと、インスタンス化されてしまうので、MyClassのコンストラクターにprivate修飾を付けることによりアク禁にしてます。Singleton::getInstance();と言うわけで、Singletonでした。byスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。