再次強調中介者模式,物件之間互相呼叫解耦

2021-10-07 08:14:55 字數 3024 閱讀 5349

/******* 第乙個版本 *********/

class goodservice

$paginate = $query->paginate($perpage);

foreach ($paginate as &$row)

return $row;

}public function initrow($row)

return $row;

}public function get(request $request)

$data = $query->get();

foreach ($data as &$row)

return $row;

}}class goodmodel

public function where($file, $value)

public function paginate()

public function get()

}class ordermodel

public function where($file, $value)

public function sum()

}class orderservice

}class export

public function export()

return '匯出';

}}class request

}$service = new goodservice();

$service->paginate(new request(), 10);

$export = new export($service);

$export->export();

/*********************第二個版本*********************/

/**中介者模式,使goodservice orderservice export 相互之間 解耦,不直接new,而是通過中介者mediator去拿這些客戶端傳入的new物件

* class abstarctmediator

*/class abstarctmediator

/*** @return mediator

*/public function getmediator()

}class goodservice extends abstarctmediator

$paginate = $query->paginate($perpage);

foreach ($paginate as &$row)

return $row;

}public function initrow($row)

return $row;

}public function get()

$data = $query->get();

foreach ($data as &$row)

return $row;

}}class goodmodel

public function where($file, $value)

public function paginate()

public function get()

}class ordermodel

public function where($file, $value)

public function sum()

}class orderservice extends abstarctmediator

}class export extends abstarctmediator

return '匯出';

}}class request

}class mediator

public function getgoodservice()

public function getgoodmodel()

public function getorderservice()

public function getordermodel()

public function getrequest()

public function sumbygoodid($goodid)

public function export()

}$mediator = new mediator();

$ordermodel = new ordermodel();

$goodmodel = new goodmodel();

$goodservice = new goodservice($mediator);

$orderservice = new orderservice($mediator);

$export = new export($mediator);

$request = new request();

$mediator->setmedia(

$goodservice,

$goodmodel,

$orderservice,

$ordermodel,

$request,

$export

);$goodservice->paginate(10);

$export->export();

/***************************第三個版本***************************/

/**外觀模式 , 為了客戶端能簡單呼叫,則用外觀模式,讓看起來很簡單去呼叫

* class action

*/class action

public function paginate($perpage = 10)

public function export()

}$action = new action();

//分頁顯示

$action->paginate(10);

//匯出

$action->export();

中介者模式

1.中間 類 namespace intermediarypattern 成員物件需要知道是哪個中介者在通知它事情 public abstract class member 各成員間要傳送訊息 public abstract void send string msg 這個方法其實是具體實施發訊息的 ...

中介者模式

中介者模式就是在物件之間的關係很複雜時用,名如其人,就像租房的黑中介一樣,如果每個房東都拿著很多租房者的資訊很麻煩,每個租房者都要拿著很多房東的資訊也麻煩,所以需要乙個中介來拿著這些資訊,租房者只需要發出租房的請求,中介會給你介紹合適的房東,房東只需要提交房屋資料就等著中介的人帶著訪客看房拿錢就行了...

中介者模式

中介者模式 mediator pattern 1 抽象中介者 mediator 角色 抽象中介者角色定義統一的介面用於各同事角色之間的通訊。具體中介者 concrete mediator 角色 具體中介者角色通過協調各同事角色實現協作行為,因此它必須依賴於各個同事角色。同事 colleague 角色...