5、php責任鏈模式
先說責任鏈模式的使用場景
舉個例子
程式導向的舉報功能
有這麼一個html頁面
<form action="process.php" method="post">
<select name='judge'>
<option value ="1">侮辱詞彙</option>
<option value ="2">垃圾廣告</option>
<option value="3">黃賭毒</option>
</select>
<input type="submit" value="舉報"/>
</form>
很簡單,對某些內容進行舉報,那麼php那邊大概就是那麼寫的
$judge = $_POST['judge'];
class Editor
{
public function process()
{
echo '禁言';
}
}
class Admin
{
public function process()
{
echo '刪帖';
}
}
class Boss
{
public function process()
{
echo '關進小黑屋';
}
}
if($judge==1)
{
$editor = new Editor();
$editor->process();
}else if($judge==2)
{
$admin = new Admin();
$admin->process();
}else if($judge ==3)
{
$boss = new Boss();
$boss->process();
}
根絕value值的不同判斷建立不同的使用者,並且執行他們各自的處理方法,這種處理方法是程式導向的。
如果說,這個時候,要增加一個新的處理,比方說,犯罪,他的value是4,那麼或許php處理的時候我們需要new一個police例項,進行處理,ifelse裡面也要跟進,這樣就意味著要對類內部的ifelse進行修改,改動原來的程式碼,不妥當。
需要一個方法來對判斷他的策略。
$judge = $_POST['judge'];
$re = new Editor();
$re->process($judge);
class Editor
{
protected $power = 1;
protected $top='Admin';
public function process($power)
{
if($this->power >= $power )
{
echo '禁言';
}else
{
$top = new $this->top;
$top->process($power);
}
}
}
class Admin
{
protected $power = 2;
protected $top='Boss';
public function process($power)
{
if($this->power >= $power )
{
echo '刪帖';
}else
{
$top = new $this->top;
$top->process($power);
}
}
}
class Boss
{
protected $power = 3;
protected $top=null;
public function process($power)
{
echo '關進小黑屋';
}
}
建立一個類,這個類有一個方法,叫做progress,方法,和一個當前等級的變數和一個記錄下一個等級類名的變數。
如果傳入的引數小於等於當前的等級,那麼說明當前等級足以處理這個錯誤,如果不能處理,建立下一個等級的類,然後呼叫同名處理函式。
這樣就不用修改類的整體結構的情況下可以無限增加新的類。責任鏈,完成
相關文章
- PHP-責任鏈模式PHP模式
- PHP 設計模式之責任鏈模式PHP設計模式
- 責任鏈模式模式
- 責任鏈模式妙用模式
- 「責任鏈模式」栗子模式
- 責任鏈模式探究模式
- 設計模式 —— 責任鏈模式設計模式
- Java責任鏈模式(ChainofResponsibility模式)Java模式AI
- 設計模式(責任鏈模式)設計模式
- 設計模式-責任鏈模式設計模式
- 23_責任鏈模式模式
- 這就是『責任鏈模式』?模式
- 責任鏈模式(Chain Of Responsibility)模式AI
- 設計模式(三) 責任鏈模式設計模式
- 設計模式之責任鏈模式設計模式
- 設計模式之——責任鏈模式設計模式
- Design Patterns in Android:責任鏈模式Android模式
- Netty中的責任鏈模式Netty模式
- Chain of responsibility-責任鏈模式AI模式
- 責任鏈模式(案例解析)(9)模式
- 責任鏈模式的實踐模式
- 聊一聊責任鏈模式模式
- JAVA設計模式之責任鏈模式Java設計模式
- 設計模式系列之「責任鏈模式」設計模式
- 極簡設計模式-責任鏈模式設計模式
- 用Lambda重構責任模式鏈模式
- 設計模式(四)OkHttp的責任鏈模式設計模式HTTP
- Java學設計模式之責任鏈模式Java設計模式
- 設計模式第七講-責任鏈模式設計模式
- 我的Java設計模式-責任鏈模式Java設計模式
- 代理模式增強之路(代理+責任鏈模式)模式
- c#中責任鏈模式詳解C#模式
- 責任鏈模式在SpringAOP中的使用模式Spring
- 程式碼精簡之路-責任鏈模式模式
- 設計模式 | 責任鏈模式及典型應用設計模式
- Rust語言之GoF設計模式:責任鏈模式RustGo設計模式
- 設計模式之責任鏈模式——Java語言描述設計模式Java
- 每天一個設計模式之責任鏈模式設計模式