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 チュートリアルに興味のある友人の参考になれば幸いです。