PHP實現基於狀態的責任鏈審批模式詳解

2022-09-26 05:21:08 字數 1136 閱讀 1185

我們開發**,除了前後,還有後台,除了內容管理,很多時候要涉及到『審批』。

比如:商務部要做個專題推廣活動,活動中需要呼叫一些商品做優惠。

1、商務部編輯先寫文案

2、商務部領導審批文案內容

3、商品部領導需要審批商品的**和庫存(萬一沒貨呢)

4、後面可能還有好多領導要審批(帶擴充套件)

今天我們要引入的模式是『責任鏈模式』

在責任鏈模式裡,很多物件由每乙個物件對其下家的引用而連線起來,形成一條鏈條。請求在這個鏈條上傳遞,知道鏈條上的某乙個物件決定處理次請求。發出這個請求的客戶端並不知道鏈條上哪乙個物件最終處理這個請求。

為了演示方便,我們做**設定。

1、假定層級關係是:編輯

2、假設只能一級級審批(也就是不能跳級,僅為了演示方便)

3、這裡審批暫時不能回退

(上圖:演示介面show.php)

show.php:

<?php require('subject.php');

if ($_get)

}?>

責任鏈-審批

編輯點選『建立文案』提交內容,然後把文案寫到到本地json檔案(儲存)。文案的主題是subject.php:

<?php class subject

}這個時候文案已經建立好了,需要進入審批

抽象類(領導)manager.php :

<?php abstract class manager

public function __construct()

public function step($msg)

else

}else}}}

商務部領導,商品部領導,大boss都要繼承這個抽象類。

businessleader.php

<?php class businessleader extends manager

productleader.php:

<?php class productleader extends manager

lastleader.php

<?php class lastleader extends manager

在編輯提交文案之後,會進入『領導審批』階段:

if (isset($_get['step']))

基於springBoot的責任鏈模式

在日常的業務處理中,責任鏈很常用,在此做記錄 校驗呼叫鏈封裝 author nanfengxiangbei date 2022 3 7 component public class topaycheckermaster extends topayabstractchecker 啟動校驗 param ...

責任鏈模式的基本設計與實現

責任鏈是用一系列類 classes 試圖處理乙個請求request,這些類之間是乙個鬆散的耦合,唯一共同點是在他們之間傳遞request.也就是說,來了乙個請求,a類先處理,如果沒有處理,就傳遞到b類處理,如果沒有處理,就傳遞到c類處理,就這樣象乙個鏈條 chain 一樣傳遞下去。優點降低耦合度。它...

php基於陣列的分頁實現

關於陣列的分頁函式,用陣列進行分頁的好處是可以方便的進行聯合多表查詢,只需要將查詢的結果放在陣列中就可以了以下是陣列分頁的函式,函式page array用於陣列的分頁,函式show array用於分頁函式的操作及顯示,需要配合使用.兩個函式通過全域性變數 countpage發生聯絡,此變數用於跟蹤總...