이전 기사 "PHP의 조합 모드에 대한 심층 분석"에서 PHP의 조합 모드를 소개했습니다. 이 기사에서는 PHP 디자인 패턴의 중재자 모드를 이해하도록 안내합니다.
저번에도 언급했듯이 집 밖에서 일하는 우리는 부동산 중개업자와 깊은 접촉을 하는 경우가 많습니다. 대학 졸업 후 바로 자신이 좋아하는 도시에 집을 살 수 있는 X2세대는 우리의 고려 대상이 아니다. 장기간 집을 임대해야 하기 때문에 업무나 생활의 변화로 인해 1~2년, 3~5년마다 부동산 중개업자와 거래를 해야 할 수밖에 없습니다. 때로는 집을 빌릴 때 집주인의 정보를 반드시 알 필요도 없고, 집주인도 우리의 정보를 알 필요가 없는 경우도 있습니다. 여기서 중개자는 우리의 소통의 다리가 됩니다. 이 상황은 실제로 집주인이 해외로 나가거나 해외에서 할 일이 있어서 집을 완전히 중개인의 손에 맡기는 것과 같습니다. 이러한 상황과 유사하게, 코드 세계에서는 중재자 패턴을 적용한 전형적인 사례입니다.
GoF 정의: 중간 개체를 사용하여 일련의 개체 상호 작용을 캡슐화합니다. 중재자는 객체가 서로 명시적으로 참조하는 것을 방지하여 느슨하게 결합하고 객체 간의 상호 작용을 독립적으로 변경할 수 있도록 합니다. 여기서는 두 개의 고정 동료 클래스가 있다고 가정하고 서로 통신합니다. , 들어오는 동료가 1일 때 2의 Notify 메소드가 호출됩니다. 이는 2가 1abstract class Mediator
{
abstract public function Send(String $message, Colleague $colleague);
}
class ConcreteMediator extends Mediator
{
public $colleague1;
public $colleague2;
public function Send(String $message, Colleague $colleague)
{
if ($colleague == $this->colleague1) {
$this->colleague2->Notify($message);
} else {
$this->colleague1->Notify($message);
}
}
}
의 메시지를 수신하도록 하는 것과 같습니다. 동료 클래스와 해당 클래스의 특정 구현에 관해서는 여기서 확인해야 할 한 가지가 있습니다. 각 동료 클래스는 중개자만 알고 다른 동료 클래스는 알지 못한다는 것이 중개자의 특징입니다.
abstract class Colleague { protected $mediator; public function __construct(Mediator $mediator) { $this->mediator = $mediator; } } class ConcreteColleague1 extends Colleague { public function Send(String $message) { $this->mediator->Send($message, $this); } public function Notify(String $message) { echo "同事1得到信息:" . $message, PHP_EOL; } } class ConcreteColleague2 extends Colleague { public function Send(String $message) { $this->mediator->Send($message, $this); } public function Notify(String $message) { echo "同事2得到信息:" . $message; } }
클라이언트 통화는 비교적 간단해요!
이 모델이 일부 커뮤니케이션 제품을 만드는데 매우 적합하다고 생각하시나요? 예, 소셜 채팅, SNS, 라이브 방송 등은 모두 적합합니다. 이 모델은 사용자를 서로 분리할 수 있고 한 명의 사용자가 모든 관련 사용자 개체를 관리할 필요가 없기 때문입니다사용자가 다음을 수행할 필요가 없기 때문입니다. 관계를 유지하므로 관계 간의 다대다 유지 관리 문제도 해결됩니다. 동시에 사용자 클래스의 좋은 캡슐화를 유지하면서 관계를 변경하기 위해 사용자 클래스를 수정할 필요가 없습니다. 중개자는 유지 관리를 중앙 집중화하므로 이 클래스가 너무 복잡하고 커질 수 있습니다
따라서 패턴은 만병통치약이 아니므로 비즈니스 시나리오를 이해하고 적절하게 사용해야 합니다중개자는 개체 그룹이 통신하는 상황에 적합합니다. 잘 정의되어 있지만 복잡한 방식으로, 너무 많은 하위 클래스를 생성하지 않고 여러 클래스에 분산된 동작을 사용자 정의하고 싶을 때
기업가로서 저는 프로젝트 관리의 중요성을 알고 있으며, 프로젝트 관리자는 중개인. 조직적인 관점에서 보면 프로젝트 시작과 끝에서 상사로서 누가 코딩을 하는지 신경 쓸 필요 없이 소통하고 싶은 사람은 바로 프로젝트 매니저다. 같은 방식으로 다른 보조 부서에는 재무, 인사, 관리 등이 포함됩니다. 누가 코드를 작성하는지 상관하지 않고 프로젝트 관리자와 소통하여 프로젝트 상태와 조정해야 할 사항을 이해하면 됩니다. 프로젝트 팀에서 코드를 작성하는 사람들은 어떤가요? 누가 그에게 임금을 지불할지, 출석 문제가 어디에 있는지 알 필요가 없습니다. 이 모든 것은 프로젝트 관리자가 해결할 수 있습니다. 따라서 프로젝트 관리자 책임 시스템에 따른 프로젝트 개발은 중개 모델의 전형적인 적용입니다. 우리 휴대폰 공장이 이렇게 빨리 발전하는 이유는 이 프로젝트 매니저들 덕분입니다. 저녁에 성대한 저녁을 대접합시다~~~
전체 소스 코드: https://github.com/zhangyue0503/designpatterns-php/blob/master/15.mediator/source/mediator-webchat.php
$m = new ConcreteMediator(); $c1 = new ConcreteColleague1($m); $c2 = new ConcreteColleague2($m); $m->colleague1 = $c1; $m->colleague2 = $c2; $c1->Send("吃过饭了吗?"); $c2->Send("没有呢,你打算请客?");
원본 주소: https://juejin.cn /post /6844903975192363015
저자: 하드코어 프로젝트 매니저
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP의 중개 모델에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!