原文地址:PHP设计模式(五):多态Introduction在PHP设计模式(四):继承中我们介绍了继承,利用extends来进行程序设计的方法。在PHP设计模式(二):抽象类和接口中我们介绍了接口,事实上也存在利用interface的程序设计方法,那就是多态。和C/C++,Java,Python等语言一样,"/> 原文地址:PHP设计模式(五):多态Introduction在PHP设计模式(四):继承中我们介绍了继承,利用extends来进行程序设计的方法。在PHP设计模式(二):抽象类和接口中我们介绍了接口,事实上也存在利用interface的程序设计方法,那就是多态。和C/C++,Java,Python等语言一样,">

Heim >Backend-Entwicklung >PHP-Tutorial >PHP设计模式五:多态

PHP设计模式五:多态

WBOY
WBOYOriginal
2016-07-29 08:51:091035Durchsuche

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

原文地址:PHP设计模式(五):多态

Introduction

在PHP设计模式(四):继承中我们介绍了继承,利用extends来进行程序设计的方法。
在PHP设计模式(二):抽象类和接口中我们介绍了接口,事实上也存在利用interface的程序设计方法,那就是多态。
和C/C++,Java,Python等语言一样,PHP也支持多态。多态更多是是一种面向对象程序设计的概念,让同一类对象执行同一个接口,但却实现不同的逻辑功能。

多态/Polymorphism

还是用动物、鲸鱼和鲤鱼来举例:

<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等语言是不同的。此外,返回不同类型的数据,甚至不返回结果,对程序设计来说,会额外增加维护成本,已经和使用接口的初衷不同了(接口为了封装实现,而不同的返回值事实上是需要调用者去理解实现的)。

Summary

合理利用多态对接口进行不同的实现,简化你的编程模型,让代码易于维护。

以上就介绍了PHP设计模式五:多态,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn