2016-10-21 18 views
0

シングルトンクラスを作成するタイミングを決定するのに問題があります 私はデータベース用に持っています。PHPでは、ユーティリティクラスが優れたシングルトンクラスを作っていると言えるでしょうか?

イメージリンクの作成を担当するクラスを作成したいとします。 URL、画像、タイトル、altタグ、サイズなどをお知らせします。 画像リンクを返します。

このためにクラスを作成することは意味がありますか?もしそうなら、これはシングルトンクラスの候補の一例でしょうか?

+0

アンカータグを返すためのメソッドが必要なのはどうでしょうか?それに本当にクラスが必要ですか? – ElefantPhace

+0

リンクのいくつかは非常に複雑になります。それで、私はUtilityクラスのようなものを考えているのです。アンカーを必要以上に多く必要とする。しかし、それはポイントのほかにあります。私はphpやoopやプログラミングに慣れていません。私が知りたかったのは、このようなクラスを作るのが理にかなっています。もしそうなら、シングルトンは適切なものになります。 車や人のクラスをもう1つ読めば、私は狂ってしまいます。 – Lixo

+0

ソフトウェアデザインでは、あなたはしばらく壁に頭を打つだろうが、最終的には意味をなさない。 – Adrian

答えて

1

オクラホル人は、ピンフォークを壊す前にそれを作ります。

一般に、シングルトンは、ソフトウェア設計の観点からはまれな選択です。しかし、本当に必要なことが数回ありました。

  • クラスを複数回インスタンス化すると、アプリケーションに悪影響を及ぼすことがあります。この例としては、リモートリソースへの永続的な接続を維持する必要のあるクラスがあります。したがって、クラスの新しいインスタンスを作成すると、有害な可能性のあるたくさんの接続が生成される可能性があります。この場合、私はその機能にロックレスアクセスを実装することができました。だからこれはシングルトンが最良の選択であったまれなケースの1つでした。
  • クラスにカプセル化する共有状態があります。しかし、ここでのシングルトンの唯一の適切なケースは、この共有状態が読み込み専用であるかどうかです。構成データの共有は、たいていの場合、シングルトンを通じて行われます。

これらは、私がシングルトンを使用する必要がある場合のみです。あなたが過度の習慣を習得するのであれば、コーナーに自分自身を記述するのは本当に簡単です。

上記の例では、実際にはそれほど良いケースではありません。ヘルパーメソッドを公開するHtmlUtilクラスを簡単に持つことができます。機能にアクセスする必要があるときには、このクラスをインスタンス化してから使用することができます。

+0

しかし、クラスをインスタンス化して何度も何度も何度もそれを引き上げるのは高価ではないのですか? ページの読み込みには、20-30個の画像ボタンがあるかもしれません。 次に、私が見たようにクラスには別の問題があります。他の授業で提供されるリソースが必要かもしれないのでしょうか? – Lixo

+1

私はPHPの専門家ではありませんが、どの言語でもクラスをインスタンス化するオーバーヘッドは、そのクラスが構築中に重大な重大なアクションを行わない限り、超小型です。インスタンス化のオーバーヘッドがパフォーマンス上の問題になることは決して見たことがありません。実際には、人々はメモリから物事をリリースすることを忘れて反対(私はC + +をお見逃しなく) – Adrian

関連する問題