php 運用設計模式:觀察者模式,設計電商平臺支付成功程式|Github倉庫
阿新 • • 發佈:2018-12-12
前(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倉庫