面向对象中的三大特性是:封装、继承、多态。相对于封装和继承,多态要相对复杂一样。继承和多态是来自于生物学,简单的说儿女会继承父母的一些特性称为继承,但儿女在同一个方面有不同于父母的地方,这就是我们说的多态。比如:一般健康的人都会跑步,这是人类继承下来的本能,但每个人跑步的速度不一样。今天我们用一个支付的小例子来说一下多态:
第一、在国内线上支付一般是用支付宝和微信。为了统一规范先定义一个抽象的支付类做为基类,里面一个去支付的功能。
abstract class Pay
{
abstract public function goPay();
}
第二、由于线上支付有支付宝、微信等各种支付。每种支付的内部代码或对接方式不一样。所以每种支付方式定义一个类,作为支付子类。可以在goPay中去实现各种支付的具体代码。以后要多加一个招商支付只要再加一个ZhaohangPay去继承Pay即可。
//支付宝支付
class Alipay extends Pay
{
public function goPay ()
{
echo '正在进行支付宝支付……<br/>';
}
}
//微信支付
class Wechatpay extends Pay
{
public function goPay()
{
echo '正在进行微信支付……<br/>';
}
}
第三、为了方便统一调用定义一个支付方式的类
class Payment
{
static function pay(Pay $pay)
{
$pay->goPay();
}
}
第四、根据用户的选择的支付类型调用不同的支付方式
Payment::pay(new Wechatpay());
Payment::pay(new Alipay());
上面就是一个最简单的支付例子来说明一下多态,有没有觉得这样的代码思维比将所有代码写一个类里更易于维护和扩展。欢迎留言讨论!
php中的多态
关注快乐程序员公众号,每日分享一点小知识。爱编程,爱生活!