通过简单工厂模式实现多种支付理解抽象类和接口

类是描述一个实体的,实体则包含属性和该属性可以实现的动作,所以抽象类可以包含属性和方法。

接口是描述行为的,所以接口仅可以定义方法,不可以定义属性,但可以定义常量。

 

举例说明实现支付,支付可以有很多种方式:微信、支付宝、京东白条等。他们都至少有一个支付行为,所以首先定义一个支付接口。

它们都含有一些公有属性,比如支付时间、支付金额,流水号,以及设置和获得这些属性的方法。所以首先应该定义一个抽象类。

pay_time = $time;
    }

    public function setAmount($amount)
    {
        $this->amount = $amount;
    }

    public function setSerial($serial_num)
    {
        $this->serial_num = $serial_num;
    }

    public function getPayTime()
    {
        return $this->pay_time;
    }

    public function getAmount()
    {
        return $this->amount;
    }

    public function getSerial()
    {
        return $this->serial_num;
    }
}

此时,三种支付方式分别单独定义一个类,继承抽象类、实现接口。(剩下需要的功能可以在里边自己定义)

还需要定义一个工厂类,用静态方法根据参数实例化相应的支付类。

下面进行测试:

pay();
echo "\n";
echo $wx_obj->setPayTime(date('Ymd H:i:s', time()));
echo $wx_obj->setAmount('99.9');
echo $wx_obj->setSerial('AX3J6S8HYL');
echo $wx_obj->getPayTime();
echo "\n";
echo $wx_obj->getAmount();
echo "\n";
echo $wx_obj->getSerial();
echo "\n";

通过简单工厂模式实现多种支付理解抽象类和接口_第1张图片

你可能感兴趣的:(设计模式,PHP,设计模式,抽象工厂,PHP,接口,抽象类)