php中的多态

面向对象中的三大特性是:封装、继承、多态。相对于封装和继承,多态要相对复杂一样。继承和多态是来自于生物学,简单的说儿女会继承父母的一些特性称为继承,但儿女在同一个方面有不同于父母的地方,这就是我们说的多态。比如:一般健康的人都会跑步,这是人类继承下来的本能,但每个人跑步的速度不一样。今天我们用一个支付的小例子来说一下多态:

第一、在国内线上支付一般是用支付宝和微信。为了统一规范先定义一个抽象的支付类做为基类,里面一个去支付的功能。


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中的多态

图片

 

关注快乐程序员公众号,每日分享一点小知识。爱编程,爱生活!

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值