PHP パターン設計 シングルトン パターン
パターンデザインとは何ですか?初心者は最初はこの高尚な名前に怖気づくでしょう。豊富なプログラミング経験を持つベテランにとって、パターン設計はあらゆるところで行われます。多くの連絡先フレームワークは、さまざまなパターンに基づいて設計されています。 簡単に言うと、コードを書く過程で最初によく触れるのは、プロセス指向の単純かつ基本的なプログラミングです。このとき、私たちがよく追求するのは、コードが特定の機能を達成できればすべてがうまくいくということです。機能を達成できれば、コードがどれほど冗長であっても、再利用可能であっても、効率的であっても関係ありません。ただし、実際に実際に適用され、全員に採用されるのは、効率的で再利用可能で、チーム開発が容易なコードです。これらを踏まえると、練習のように気軽に関数名を付けたり、スクリプトを配置したりすることはできません。パターン設計の指示は、コードを整理し、再利用可能なコードを実現し、他の人がコードを理解しやすくし、コードの信頼性を確保するためのアイデアを提供します。
すべてのパターン設計には、シングルトン パターン、ファクトリー パターン、レジストレーション ツリー パターンの 3 つの基本的なデザイン パターンがあり、他のパターンはこれらのパターンに基づいていることがよくあります。
シングルトンパターンとは何ですか?
この名前に基づいて、シングルトン パターンがアプリケーション全体でオブジェクト インスタンスが 1 つだけ存在する設計パターンを指すことが容易に理解できます。
なぜシングルトンモードを使用するのですか?
php は頻繁にデータベースを処理します。頻繁に接続オブジェクトを確立し、アプリケーションで新しい操作を実行すると、大量のシステム メモリ リソースが消費されますが、これは望ましくないことです。さらに、チーム協力プロジェクトでは、シングルトン モードにより、さまざまなプログラマが独自のオブジェクトを新しく作成し、人為的なシステム消費を引き起こすことを効果的に防ぐことができます。
シングルトンパターンを作成するにはどうすればよいですか?
この問題を見ると、優秀なプログラマーは先人の経験を待つのではなく、要件に応じてシングルトンパターンを作成しようとする可能性が高いと思います。シングルトン パターンとはどのようなパターンかを説明する他のブロガーとは異なり、オブジェクト指向プログラミングの基本的な経験がある皆さんと一緒にシングルトン パターンを自分で構築する方法について考えることを好みます。
まずはタイトルから始めましょう。 シングルトン パターンは、オブジェクト インスタンスが 1 つだけあるデザイン パターンです。これはとても苦痛です。私たちが通常作成するクラスは、多くのオブジェクトを作成できるか、オブジェクトを作成できない (抽象クラス) かのどちらかです。オブジェクトを作成するにはクラスが必要ですが、それを抽象クラスにすることはできません。このクラスは、他の人が関数を複数回作成するのを防ぐためのものです。当然、コンストラクターから始めることを検討しました。ただし、新しい操作ごとにコンストラクターが呼び出されるため、オブジェクト インスタンスが複数回作成されることになります。これは当初の設計意図に反しています。この問題を解決するには、ここで必ずコンストラクターを private または protected として宣言してください。
コンストラクターがprivateまたはprotectedとして宣言されている場合、新しいメソッドを通じてインスタンスオブジェクトを作成できない運命にあります。そして、この処理ステップの後、問題解決の見通しが明確になったことがわかりました。なぜ?新しいメソッドを通じてオブジェクト インスタンスを作成できないため、クラス内のメソッドを通じてのみオブジェクト インスタンスを作成できます。 現時点では、鶏が先か卵が先かという興味深い問題に直面しています。オブジェクトを作成した後にそのオブジェクトのメソッドを呼び出すことがよくありますが、このときはクラス内のメソッドを呼び出してオブジェクトを作成する必要があります。オブジェクトが作成されたかどうかに関係なく呼び出すことができるメソッドの解決策は、間違いなくキーワード --static を使用することです。
クラス内に静的メソッドを作成すると何が実現するのでしょうか?トピックに戻ります。インスタンス オブジェクトは 1 つだけ作成するようにしてください。 1 つだけであることを確認するにはどうすればよいでしょうか?これは非常に簡単で、ただ判断するだけです。存在する場合は直接返します。存在しない場合は、自分で作成します。もちろん、このインスタンス オブジェクトはクラスの静的プロパティです。この時点で、シングルトン モードで必要な機能が実装されます。本当に完成してるのかな~ まだこのクラスを継承する場合、コンストラクターをpublic宣言するのはダメなのでしょうか?次に、コンストラクター メソッドの前に Final キーワードを追加する必要があります。
最後にシングルトンモードのコードを貼り付け、コードの説明は以上です~~
<?<span>php </span><span>class</span><span> Single{ </span><span>public</span><span>$hash</span><span>; </span><span>static</span><span>protected</span><span>$ins</span>=<span>null</span><span>; </span><span>final</span><span>protected</span><span>function</span><span> __construct(){ </span><span>$this</span>->hash=<span>rand</span>(1,9999<span>); } </span><span>static</span><span>public</span><span>function</span><span> getInstance(){ </span><span>if</span> (self::<span>$ins</span><span> instanceof self) { </span><span>return</span> self::<span>$ins</span><span>; } self</span>::<span>$ins</span>=<span>new</span><span> self(); </span><span>return</span> self::<span>$ins</span><span>; } }</span>
シングルトンモード自体は複雑ではありませんが、深い理解が必要です。多くの初心者はまだため息をつきます: くそったれ、コンストラクターは常にパブリックであるとは限りません~ くそったれ、new を使用せずにオブジェクトを作成できます~ 実際、作成者は、コンストラクターが public、private、または protected として宣言されているかどうかに関係なく、オブジェクトは最終的に作成されるたびに呼び出されます。 New はオブジェクト インスタンスの作成に常に使用されます。シングルトン モードでもオブジェクトの作成に new が使用されますが、場所がクラスの外からクラスの中に変更されるだけです。
最後に、様々な精緻なパターン設計を開発されたプログラマーの方々に敬意を表したいです~~
以上、PHP モード設計のシングルトンモードを内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











エラーの理由は、urllib3 ライブラリの例外タイプである NameResolutionError(self.host,self,e)frome です。このエラーの理由は、DNS 解決が失敗したこと、つまり、ホスト名または IP アドレスが試みられたことです。解決できるものが見つかりません。これは、入力された URL アドレスが間違っているか、DNS サーバーが一時的に利用できないことが原因である可能性があります。このエラーを解決する方法 このエラーを解決するにはいくつかの方法があります。 入力された URL アドレスが正しいかどうかを確認し、アクセス可能であることを確認します。 DNS サーバーが利用可能であることを確認します。コマンド ラインで「ping」コマンドを使用してみてください。 DNS サーバーが利用可能かどうかをテストします。プロキシの背後にある場合は、ホスト名の代わりに IP アドレスを使用して Web サイトにアクセスしてみてください。

毎年、Apple が iOS と macOS の新しいメジャー バージョンをリリースする前に、ユーザーは数か月前にベータ版をダウンロードして最初に体験することができます。同ソフトウェアは一般ユーザーと開発者の両方が使用するため、Appleは開発者向けベータ版のパブリックベータ版である開発者版とパブリック版を両方向けに開始した。 iOS の開発者バージョンとパブリック バージョンの違いは何ですか?文字通りに言うと、開発者バージョンは開発者テスト バージョンであり、パブリック バージョンは公開テスト バージョンです。開発者バージョンとパブリック バージョンは、異なるユーザーを対象としています。開発者バージョンは、Apple が開発者によるテストのために使用します。ダウンロードしてアップグレードするには、Apple 開発者アカウントが必要です。

Java では、プライベートは「プライベート」を意味し、クラス、プロパティ、メソッドを変更するために使用されるアクセス制御修飾子です。 private で変更されたクラス メンバーは、クラス自体のメソッドによってのみアクセスおよび変更でき、他のクラス (クラスのサブクラスを含む) からはアクセスおよび参照できません。したがって、private 修飾子は最高レベルの保護を持ちます。

Python で self の使用法を紹介する前に、まず Python のクラスとインスタンスを紹介しましょう。オブジェクト指向の最も重要な概念はクラスとインスタンスであることはわかっています。クラスは抽象的なテンプレートです。学生のような抽象的なものです。 Student クラスによって表されます。インスタンスはクラスに基づいて作成された特定の「オブジェクト」であり、各オブジェクトはクラスから同じメソッドを継承しますが、そのデータは異なる場合があります。 1. Student クラスを例にします。Python では、クラスは次のように定義されます: classStudent(object):pass(Object) は、クラスがどのクラスから継承するかを示します。Object クラスはすべて

Private は、関数へのアクセスをその関数が定義されているクラスのみに制限する Java アクセス修飾子です。これには、他のクラスでは関数にアクセスできないことが含まれます。この関数はサブクラスでもアクセスできません。

相違点: 1. Make は、slice、map、および chan タイプのデータの割り当てと初期化にのみ使用できますが、new は任意のタイプのデータを割り当てることができます。 2. 新しい割り当ては型「*Type」であるポインタを返しますが、make は参照である Type を返します。 3. new によって割り当てられたスペースはクリアされ、make によってスペースが割り当てられた後、初期化されます。

Java パブリック アクセス修飾子を使用すると、どこからでも関数にアクセスできるようになり、パブリック API を宣言したり、パッケージやクラス間で共有されるツールやユーティリティを定義したりするために使用されます。具体的な使用方法は以下のとおりです。 構文: public 戻り値型関数名(パラメータリスト) {...} シナリオ: どこからでもアクセスする必要がある関数、パブリック API のメソッド、共有ツールまたはユーティリティ

いいえ、トップレベルのクラスをプライベートまたは保護されたものとして宣言することはできません。 public またはデフォルト (修飾子なし) にすることができます。修飾子がない場合は、デフォルトのアクセス権が存在する必要があります。構文 //Atoplevelclass publicclassTopLevelClassTest{ //Classbody} 最上位クラスが private として宣言されている場合、コンパイラはエラーを報告し、「修飾子 private はここでは使用できません。」というプロンプトを表示します。これは、トップレベルのクラスをプライベートにすることはできないことを意味し、保護されたアクセスにも同じことが当てはまります。
