STATICクラスとsingletonパターンの適用 
日曜日, 12月 24, 2006, 02:48 AM -  PHP
久々にプログラマ的な内容を。
っといってもメモみたいなもんだけども。

xFrameworkを開発しているときに気にしながらやっていることなのですが、xFramework内でいくつか、すべてのメソッドが静的(Static)なクラスが存在します。これは共通の機能を提供するクラスなのですが、なぜ静的なのか。
静的にしてしまうと、ソースコードが読み込まれた時点でインスタンス(クラスインスタンスは存在しませんが、メソッド自体はメモリロードされているという意味で)が存在するので、それを利用してクラスを生成しなくても利用ができるわけです。
これって、メモリくうんじゃない?って思う人もいるかもしれません。

そこで、singletonパターンというデザインパターンと比較してみます。
これは、インスタンスが1つであることを保証するためのパターンです。別に1つじゃなくてもいいんだけどもね。
共通処理で、いくつもクラスのインスタンスが生成されてはこまる、無駄などは、singletonパターンを使おうが、Staticだろうが同じく解決してくれます。

んじゃ、なんで静的な方を選んでいるのか。

答えは簡単で、singletonパターンの場合、クラスインスタンスを消したり、自動変数の用に自動的に破棄されたりすることを期待する場合は、singletonパターンを選択したでしょう。しかし、ブートストラップ内で処理を行っている中で、その機能を利用する度に、インスタンスを取得するステップが発生してしまいます。これは高速動作させるためのブートストラップとしては致命的なため、今回は静的な形を多様しているところがあります。

なんて、それっぽいこと書いたけどあってるのか?(笑)
先日購入した下記の書籍は、そんなデザインパターン自体PHPで使うのか?なんて思ってたり、むずかしそうだからいいや、って思ってる開発者にお勧めです。




コメント 

コメントを書く

必要事項とコメントを入力して下さい。









タグの挿入


:) :( :o :|