专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

PHP 实现模板模式

今天学习一下模板模式。并用它来实现聚合平台支付异步回调的例子。

abstract class ThirdPayAsyncCallbackTemplate
{
    public function asyncCallback()
    {
        $this->verifySignature();
        $this->payLog();
        $this->asyncService();
    }

    public abstract function verifySignature();
    public abstract function asyncService();
    public abstract function resultSuccess();
    public abstract function resultFail();
    public function payLog()
    {
        echo "写支付日志";
    }

}

class AliPayCallback extends ThirdPayAsyncCallbackTemplate
{
    public function verifySignature()
    {
        echo "验证支付宝支付签名";
    }

    public function payLog()
    {
        parent::payLog(); // TODO: Change the autogenerated stub
    }

    public function asyncService()
    {
        echo "改变支付宝订单状态入库";
    }

    public function resultSuccess()
    {
        return "success";
    }

    public function resultFail()
    {
        return "fail";
    }
}

class WechatPayCallback extends ThirdPayAsyncCallbackTemplate
{
    public function verifySignature()
    {
        echo "微信支付验签";
        if(验签失败)
            $this->resultFail();
    }

    public function payLog()
    {
        parent::payLog(); // TODO: Change the autogenerated stub
    }

    public function asyncService()
    {
        echo "微信支付订单入库";
        return $this->resultSuccess();
    }

    public function resultSuccess()
    {
        return "success";
    }

    public function resultFail()
    {
        return "fail";
    }
}

$ali = new AliPayCallback();
$ali->asyncCallback();
$wx = new WechatPayCallback();
$wx->asyncCallback();

父类(模板方法)里定义好操作中算法的骨架,具体实现推迟交由子类完成。只需一个抽象类和一个具体类即可。

文章永久链接:https://tech.souyunku.com/45226

未经允许不得转载:搜云库技术团队 » PHP 实现模板模式

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们