元のアドレス: PHP デザイン パターン (5): ポリモーフィズム はじめに PHP デザイン パターン (4): 継承 継承は、PHP デザイン パターン (4) で紹介しました。 extendsを使ったプログラミング方法。 「PHP デザイン パターン (2): 抽象クラスとインターフェイス」では、インターフェイスを紹介しました。実は、ポリモーフィズムと呼ばれるインターフェイスを使用したプログラミング手法もあります。 C/C++、Java、Python、その他の言語と同様、"/> 元のアドレス: PHP デザイン パターン (5): ポリモーフィズム はじめに PHP デザイン パターン (4): 継承 継承は、PHP デザイン パターン (4) で紹介しました。 extendsを使ったプログラミング方法。 「PHP デザイン パターン (2): 抽象クラスとインターフェイス」では、インターフェイスを紹介しました。実は、ポリモーフィズムと呼ばれるインターフェイスを使用したプログラミング手法もあります。 C/C++、Java、Python、その他の言語と同様、">

ホームページ >バックエンド開発 >PHPチュートリアル >PHP 設計パターン 5: ポリモーフィズム

PHP 設計パターン 5: ポリモーフィズム

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

data-id="1190000005068760" data-license="cc">

元のアドレス: PHP デザイン パターン (5): ポリモーフィズム

はじめに

PHP デザイン パターン (4): 継承では、継承のメソッドを紹介しました。 extendsを使ったプログラミング。
「PHP デザイン パターン (2): 抽象クラスとインターフェイス」では、インターフェイスを使用したプログラミング手法も存在します。これがポリモーフィズムです。
C/C++、Java、Python、その他の言語と同様に、PHP もポリモーフィズムをサポートします。ポリモーフィズムはオブジェクト指向プログラミングの概念に近く、同じタイプのオブジェクトが同じインターフェイスを実行しながら、異なる論理関数を実装できるようにします。

ポリモーフィズム/ポリモーフィズム

動物、クジラ、コイを例として使用してみましょう:

<code><?php
interface IEat {
  function eatFish();
  function eatMoss();
}

class Whale implements IEat {
  public function eatFish() {
    echo "Whale eats fish.\n";
  }
  public function eatMoss() {
    echo "Whale doesn't eat fish\n";
  }
}

class Carp implements IEat {
  public function eatFish() {
    echo "Carp doesn't eat moss.\n";
  }
  public function eatMoss() {
    echo "Carp eats moss.\n";
  }
}

$whale = new Whale();
$whale->eatFish();
$whale->eatMoss();
$carp = new Carp();
$carp->eatFish();
$carp->eatMoss();
?></code>

実行してみましょう:

<code>$ php Inheritance.php
Whale eats fish.
Whale doesn't eat fish.
Carp eats moss.
Carp doesn't eat moss.</code>

PHP 関数の定義には戻り値が含まれていないため、異なるタイプのデータを異なる関数に返すことが完全に可能であることに注意してください。インターフェースの実装。ここがC/C++やJavaなどの言語とは異なります。さらに、異なるタイプのデータを返したり、結果を返さなかったりすると、プログラミングのメンテナンスコストが増加します。これは、インターフェイスを使用する本来の目的とは異なります(インターフェイスは実装をカプセル化するように設計されており、異なる戻り値は実際には呼び出し側で実装を理解するため)。

まとめ

ポリモーフィズムを合理的に使用して、さまざまなインターフェイスを実装し、プログラミング モデルを簡素化し、コードの保守を容易にします。

以上、PHP の設計パターン 5 であるポリモーフィズムについて、その側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

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