ホームページ >バックエンド開発 >PHPチュートリアル >PHP のオブジェクト指向 5 原則のうち、オープンクローズ原則 (OCP) の詳細な説明

PHP のオブジェクト指向 5 原則のうち、オープンクローズ原則 (OCP) の詳細な説明

不言
不言オリジナル
2018-04-04 17:09:431622ブラウズ

この記事では、PHP の 5 つのオブジェクト指向原則のうち、オープンクローズ原則 (OCP) を主に紹介し、PHP のオープンクローズ原則 (OCP) の概念、原則、使用方法、および関連する注意事項を簡単に分析します。 need it can 参考に

この記事では、PHP のオブジェクト指向の 5 つの原則のうち、オープンクローズ原則 (OCP) を例を挙げて説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

1. 「オープン/クローズド」とは何ですか

ソフトウェア システムの規模が増大し続けるにつれて、ソフトウェア システムの保守と変更はますます複雑になっています。このジレンマをきっかけに、フランスの工学学者ベルトラン・マイヤーは 1998 年に「オープンクローズ原則 (OCP)」原則を提案しました。この原則の基本的な考え方は次のとおりです。モジュールはオープンであり、剛性ではなく拡張をサポートする必要があります。

Close (変更のためクローズ) モジュールの機能を拡張する場合、既存のモジュールに大規模な影響を与えたり、影響を与えたりしてはなりません。

言い換えれば、開発者は、システム内の既存のコード(ソースコードまたはバイナリコード)を変更することなく、アプリケーションシステムのソフトウェア機能を拡張する必要があります。一言でまとめると、モジュールは拡張性の観点から開発され、変更可能性の観点から閉じられるべきです。

人生で考える最も簡単な例はコンピューターです。インターフェースを介してさまざまなデバイスを接続するだけで、コンピューターの機能を簡単に拡張できます。

オープン/クローズによりシステムの拡張性と保守性が向上しますが、これも相対的なものであり、メンテナンスの困難を軽減するために一部の機器と機能を安定した状態に保つ必要があります。新しい機能を実装するには、ハードウェアをアップグレードするか、より高性能なコンピューターに変更する必要があります。コンピュータのマルチメディア再生ソフトウェアを例に挙げると、プレーヤーとしては、マルチメディア ファイルを開く、再生を停止する、早送り、音量調整など、いくつかの基本的かつ汎用的な機能が必要です。しかし、どのようなプレーヤーであっても、どのような再生プラットフォームであっても、この原則に従って設計されたプレーヤーは、統一されたスタイルと操作習慣を持っている必要があり、どのプレーヤーを使用しても、作成者はすぐに使い始めることができるはずです。

プレーヤーを例として、まず抽象インターフェイスを定義します。コードは次のとおりです。

interface process
{
  public function process();
}

次に、以下に示すように、このインターフェイスを拡張してデコード機能と出力機能を実装します

class playerencode implements process
{
  public function process()
  {
    echo "encode",PHP_EOL;
  }
}
class playeroutput implements process
{
  public function process()
  {
    echo "ouput",PHP_EOL;
  }
}

プレーヤーのさまざまな機能については、規約に従って実装している限り、これはオープンですプロセス インターフェイスを使用すると、プレーヤーに新しい機能モジュールを追加できます。ここではデコードおよび出力モジュールのみが実装されており、必要に応じてさらに新しいモジュールを追加できます。

次に、プレーヤーのスレッド高スケジューリング マネージャーを定義します。プレーヤーが通知を受信すると (外部クリック動作または内部通知動作の場合があります)、実際のスレッド処理をコールバックします。コードは次のとおりです。

具体的な製品が出てきました。ここでMP4クラスを定義します。このクラスは比較的クローズドで、イベント処理ロジックを定義します。コードは次のとおりです

最後はイベントソート用の処理クラスです。このクラスは、イベントを並べ替え、ユーザーまたは内部の動作を判断して、プレーヤーの組み込み純血種マネージャーによるスケジュール用の正しい「スレッド」を生成する責任を負います。コードは次のとおりです

class playProcess
{
  private $message = null;
  public function __construct() {}
  public function callback(event $event)
  {
    $this->message = $event->click();
    if($this->message instanceof process)
    {
      $this->message->process();
    }
  }
}

最後に次のコードを実行します

class mp4
{
  public function work()
  {
    $playProcess = new playProcess();
    $playProcess->callback(new event('encode'));
    $playProcess->callback(new event('output'));
  }
}

実行結果は次のとおりです:

出力をエンコードする

2. オープン-クローズの原則に従う方法

オープン-クローズを実現するための核心は、具体的ではなく抽象的にプログラムすることです。抽象化が比較的安定しているためです。クラスを固定の抽象化に依存させることで、そのような変更は閉じられ、オブジェクト指向の継承とポリモーフィズムのメカニズムを通じて、抽象本体を継承し、そのメソッドをオーバーライドして固有の動作を変更し、新しい拡張メソッドを実装できます。拡張に開かれています。

1) 「抽象化」と「カプセル化」のアイデアをデザインに適用します。

一方では、ソフトウェアシステム内で考えられるさまざまな「変動要因」を見つけて、それらをカプセル化することです。

一方、可変要素は複数の異なるコードモジュールに分散すべきではなく、オブジェクトにカプセル化される必要があります。

2) システム関数プログラミングの実装にインターフェイス指向プログラミングを適用します。

要件が変更された場合、変更に適応するためにこのインターフェースの新しい実装クラスを提供できます。

インターフェイス指向プログラミングでは、インターフェイスを実装する関数クラスと、インターフェイス型として宣言されるオブジェクトが必要です。デザインモードでは、装飾モードでは明らかに OCP が使用されます。

関連する推奨事項:

オブジェクト指向 PHP で使用されるいくつかのキーワード

以上がPHP のオブジェクト指向 5 原則のうち、オープンクローズ原則 (OCP) の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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