ホームページ  >  記事  >  バックエンド開発  >  「ひと目でわかる」シリーズのPHPデザインパターンゼロ

「ひと目でわかる」シリーズのPHPデザインパターンゼロ

WBOY
WBOYオリジナル
2016-07-29 08:55:35974ブラウズ

フレンドリンク:
1.ひと目でわかるPHPデザインパターンシリーズ(1)
2. ひと目でわかる PHP デザインパターンシリーズ (2)

前書き

この記事は 3 つのデザインパターンを書き終えた後に書きました。理由は、今日はデザインに関することですが、さらにいくつかのデザインパターンを入手したためです。誰もが普段書いているパターンやコードを、私自身の言葉で書いてみようと思います。

あなたの知らないデザインパターンの原則

単一責任の原則

定義

クラス変更の理由は複数あってはならない。平たく言えば、クラスは 1 つの責任のみを担当します。

言語理解

分業して協力できる人は、仕事を上手に分担し、それぞれが自分の仕事に責任を持ち、相互影響を避けるためにうまくやるだけです。

リヒター置換原理

定義

基本クラスを参照するすべての場所は、そのサブクラスのオブジェクトを透過的に使用できなければなりません。つまり、サブクラスは親クラスの機能を拡張できますが、元のクラスを変更することはできません。関数

言語理解

前任者によって作成されたクラスを継承する場合、どこに影響するかわからないため、内部のメソッドを書き換えたりオーバーロードしたりしないようにしてください。継承メソッドでは、元のロジックを尊重し、簡単に変更しないようにします。

依存関係逆転の原則

定義

高レベルのモジュールは低レベルのモジュールに依存すべきではなく、両方ともその抽象化に依存すべきであり、詳細は抽象化に依存すべきです。

言語理解

親モジュールはそのサブモジュールに依存しません。これにより、製品戦略が変更された場合の落とし穴を回避できます。問題を解決するには、簡単に水平方向に拡張することもできます (抽象クラスを継承する別のサブクラスを使用しましょう)。継承する場合は、リスコフ置換原則に従います

インターフェース分離原則

定義

クライアントはインターフェースに依存すべきではありません。必要はありません。あるクラスから別のクラスへの依存関係は、最小のインターフェイス上に構築される必要があります。

言語理解

インターフェイスを介してプログラミングしている場合は、インターフェイス クラスに多数の抽象メソッドを置かないでください。これにより、継承されたクラスが、たとえそれがそのクラスにまったく属していないメソッドを実装することになります。また、共通のものはインターフェースクラスに記述し、個別にカスタマイズするものは個別に記述し、サブクラスはインターフェースクラスを選択的に継承できるようにしてください。

デメテルの法則

定義

オブジェクトは、他のオブジェクトについての最小限の知識を保持する必要があります。

言語理解

一般的な真実は、知りすぎると死ぬ可能性が高くなるということです。モジュールを作成するときは、モジュールをより多くの結合に分割するようにしてください。 、結合が大きくなり、独立したモジュールに分割されている場合、何か問題が発生しても完全に崩壊することはありません。

オープンクローズの原則

定義

クラス、モジュール、関数などのソフトウェアエンティティは、拡張のためにオープンであり、変更のためにクローズされる必要があります。

現地語の理解

製品要件が変更された場合は、既存のコードを変更するのではなく、ソフトウェア エンティティの動作を拡張する (クラスの追加、メソッドの追加) ことによって変更を実現するようにしてください。

問題についての議論

<code>很多优化的地方都在说:高内聚低耦合,那么问题来了,高内聚低耦合真的好吗?</code>

私の意見は、それはビジネスの特定のロジックに依存するということです。凝集性が高く結合性が低いため、特定のビジネスが相互に関連し複雑になると、それは直接問題の存在につながります。独立したコードブロックが多いと、たとえNoteがあっても、コードを見ると飛び回っているような感覚になり、可読性が低下し、メンテナンス性の低下に直結します。コードを理解するのに多くの時間がかかり、先に進むことが困難になります。特定の依存関係に応じた適切な結合コードとチャンク化の方が良いと聞きました~
また、先人がまとめた抽象的な仕様に従って単純にコードを書くことも間違いです。良い設計パターンは、最初から設計するのではなく、段階的に変更します。

メッセージを残して共有することを歓迎します

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上、ひと目でわかるPHPデザインパターンゼロを内容も含めて紹介しましたので、PHPチュートリアルに興味のある方の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。