1. 程式人生 > >php 運用設計模式:觀察者模式,設計電商平臺支付成功程式|Github倉庫

php 運用設計模式:觀察者模式,設計電商平臺支付成功程式|Github倉庫

前(fei)言(hua)

在支付程式中,大型專案的維護,如果沒有運用到設計模式,面向過程的程式設計,order程式會日益增加,程式看上去雜亂無章,今天寫了一個小demo ,之前沒有運用過觀察者模式的小夥伴們,可以瞭解一下。

學到什麼

學會了這種設計模式,會讓你的程式碼清晰明瞭,後期維護起來非常的方便,產品增加需求,也分分鐘有思路;
適用場景舉一反三(沒有最好的設計,只有更合適的設計):
編輯商品:通知redis;操作記錄;統計商品數量;商品分類快取更新。。。。;
供應商發貨了:通知客戶,增加訂單操作記錄。。。。(編不下去了。。。);
。。。。。。自由發揮想象

開始

專案在:
大型男性交友圈地址:

gitbub

這邊對程式碼大致的解釋一下:
進入Demo;
Pay.php 是我們要執行的程式,在cmd 命令中可以輸入:php Pay.php
即可看到:

E:\linuxdir\designpattern\Demo>php Pay.php
通知倉庫訂單id為:110
通知郵箱:[email protected]
傳送簡訊給客戶:廖總您2020天貓雙十一消費1000000000廖總您真有錢!!!!
修改優惠券:250

具體程式碼Pay具體程式碼:

<?php
/**
 * @author liaosp.top
 * @Time: 2018/11/12 -9:54
 * @Version 1.0
 * @Describe: 通過觀察者模式,支付成功之後通知,各個部門;
 * 1:
 * 2:
 * ...
 */

include ("Loder.php");

class Pay
{
    public function paySuccess(){
        $data =[
       'order_id'=> 110,
       'name'=>'廖總',
       'email' =>'
[email protected]
', 'coupon_id'=>250, 'money'=>1000000000, ]; $class = new \PayAfter(); $class->addObj(new Depot()); $class->addObj(new Email()); $class->addObj(new Phone()); $class->addObj(new Coupon()); //todo... $class->notice($data); } } //呼叫方法 (new Pay)->paySuccess();

我們發現,短短的幾個程式在主導了整個支付的流程;(乾淨整潔)
通過new 一個PayAfter 新增addObj 的方法,新增觀察者;
再通過notice全部通知給對應的程式;
(不會說話,自己領悟)
這邊有個Loder.php 是幫沒有include的類,自動引入的,如果已經是框架中的, 則這步省略;
有加一個interface 的介面,為了規範程式碼,減少不必要的報錯。

詳見:
git倉庫