중개 모델
객체 지향 설계는 객체에 걸쳐 동작의 분포를 장려하여 객체 사이의 많은 연결을 초래할 수 있습니다. 최악의 경우 각 객체는 다른 모든 객체를 알아야합니다.
시스템을 많은 객체로 분할하면 재사용 성을 향상시킬 수 있지만 상호 연결된 물체의 서지는 재사용 성을 줄입니다. 다수의 연결 관계는 다른 객체 (시스템이 불가분의 전체로 나타냄) 의 도움없이 물체가 작동하는 것을 불가능 하며, 현재 시스템 동작을 크게 변경 하기가 어렵습니다. 동작이 많은 객체들 사이에 분포되기 때문에 결과는 시스템의 동작을 사용자 정의하기 위해 많은 서브 클래스를 정의해야합니다. 따라서 중재자 객체 중재자를 도입했습니다.
중개 물체를 통해, 메쉬 구조의 시스템은 중개를 중심으로하는 별 구조 로 변환 될 수있다. 각 특정 객체는 더 이상 다른 물체와 직접적인 관계가 없지만 중개 객체를 통해 중재됩니다 . 중개 객체의 도입은 또한 새로운 객체의 도입으로 인해 시스템 구조가 다수의 수정을받지 않습니다.
중재자 모드 : 중재자 모드 라고도하는 중재자 모드 를 사용하여 일련의 객체의 상호 작용을 캡슐화하여 각 객체를 서로 표시하고 참조 할 필요가 없으므로 커플 링을 풀고 상호 작용을 독립적으로 변경합니다 .
(이미지 출처 : 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 기초) 팁 : 각 동료는 중재자 의 존재 만 알고 있으며 다른 동료가 존재하는지 (또는 해체하는 방법) 알 필요가 없습니다. 중재자에게만 메시지를 보내면 다른 동료에게 전달하면됩니다 ( 중재자는 모든 동료 관계를 저장하고 중재자 만이 얼마나 많은/어떤 동료가 있는지 알고 있습니다).
모드 구현
유엔은 여러 나라의 진술을 전달하고 각 국가와의 관계를 중재합니다.
주정부는 유엔 안전 보장 이사회에 메시지를 보내고받습니다.
대학
추상 동료 수업, 각 동료의 공개 방법을 정의하십시오.
/** * @author jifang * @since 16/8/28 4:22 PM. */공개 초록 계급 국가 {보호 된 유엔 중재자; 개인 문자열 이름; 공공 국가 (유엔 중재자, 문자열 이름) {this.mediator = 중재자; this.name = 이름; } public String getName () {return name; } 보호 된 초록 void Declare (String MSG); 보호 된 초록 void arever (String Msg);}-----------------------------------------------------------------------------------------
Concretecolleague
특정 동료 :
• 모든 동료 클래스는 중재자 개체를 알고 있습니다.
• 각 동료 대상은 다른 동료와 의사 소통해야 할 때 중개자와 의사 소통합니다.
Class USA Extends Country {Public USA (유엔 중재자, 문자열 이름) {Super (중재자, 이름); } @override public void declare (string msg) {mediator.declare (this, msg); } @override public void lecep (String MSG) {System.out.println ( "미국 수신 : [" + msg + "]"); }} 클래스 이라크는 국가 확장 {공공 이라크 (유엔 중재자, 문자열 이름) {super (중재자, 이름); } @override public void declare (string msg) {mediator.declare (this, msg); } @override public void leceple (string msg) {System.out.println ( "이라크 수신 : [" + msg + "]"); }} Class China Extends Country {Public China (유엔 중재자, 문자열 이름) {Super (중재자, 이름); } @override public void declare (string msg) {mediator.declare (this, msg); } @override public void leceple (String msg) {System.out.println ( "중국 수신 : [" + msg + "]"); }}-----------------------------------------------------------------------------------------
중재인
초록 중재자 : 동료와 통신하기위한 인터페이스 정의 :
공공 초록 클래스 유엔 {보호 목록 <Country> 국가 = New LinkedList <> (); 공공 무효 레지스터 (국가 국가) {컨트리 .add (국가); } public void remove (국가 국가) {Country.Remove (국가); } 보호 된 초록 무효 선언 (국가 국가, 문자열 msg);}-----------------------------------------------------------------------------------------
Concretemediator
특정 중개자 :
• 개별 동료를 이해하고 유지합니다.
• 각 동료 대상을 조정하여 협업 행동을 실현하십시오 (동료로부터 메시지를 받고 특정 동료에게 주문을 발행).
클래스 유엔 SecurityCouncil을 연장합니다. { / ** * 안전 보장 이사회는 중간에 중재됩니다 * * @param 국가 * @param msg * / @override protected void declare (Country Country, String Msg) {(국가) {if (! tocountry.equals (국가)) {String name = country.getname (); tocountry.receive (이름 + "평화롭게 말 :" + msg); }}}} 확장이 없으면 중재자는 Concretemediator와 하나로 결합 할 수 있습니다.
•고객
공개 클래스 클라이언트 {@test public void client () {Unitednations Mediator = New UnitednationssecurityCouncil (); Country USA = New USA (중재자, "USA"); 국가 중국 = 새로운 중국 (중재자, "중국"); 국가 이라크 = 새로운 이라크 (중재자, "이라크"); Mediator.register (미국); Mediator.register (중국); Mediator.register (이라크); USA.DECLARE ( "나는 서둘러 내가 누구인지 걱정하는 이라크를 공격하고 싶다 !!!"); System.out.println ( "--------------"); China.declare ( "우리는 강력하게 정죄 !!!"); System.out.println ( "------------------------------------------- 이라크 .declare ( "와서 서로 상처를 입어 !!!"); }}-----------------------------------------------------------------------------------------
요약
중재자의 출현은 각 대학 간의 결합을 감소시켜 동료와 중재자가 독립적으로 변경되고 재사용 될 수있게합니다. 객체가 공동 작업되기 때문에 중재는 독립적 인 개념으로 취해서 객체에 캡슐화되므로 각 객체 자체의 동작에서 그 사이의 상호 작용으로 이동하여 시스템이보다 거시적 관점에서 볼 수 있습니다.
• 적용 가능성
중개 모델은 시스템에 쉽게 적용 할 수 있으며 시스템에서 쉽게 오용됩니다. 시스템에 "다수의"복잡한 객체 그룹이 나타나면 중개자를 사용하기 위해 서두르지 마십시오. 시스템 설계가 합리적인지를 먼저 반영하는 것이 가장 좋습니다. Concretemediator가 중앙 집중화를 제어하기 때문에, 상호 작용 복잡성은 중개자의 복잡성이되어 중개자가 Concretecolleague보다 더 복잡하게 만듭니다. 다음 상황에서 중개 모델을 사용하는 것이 좋습니다.
◦ 객체 그룹은 잘 정의되어 있지만 복잡한 방식으로 통신합니다. 결과적인 상호 의존성은 혼란스럽고 이해하기 어렵다.
◦ 객체는 다른 많은 객체를 말하고 이러한 객체와 직접 통신하여 객체를 재사용하기가 어렵습니다.
◦ 여러 클래스에 배포 된 동작을 사용자 정의하려고하지만 너무 많은 서브 클래스를 생성하고 싶지 않습니다.
• 관련 모드
◦ 경찰은 객체 서브 시스템을 추상화하여보다 편리한 인터페이스를 제공한다는 점에서 중재자와 다릅니다. 그 프로토콜은 단방향이며, 즉 Facade Object는이 하위 시스템 클래스에 요청하지만 그렇지 않으면 할 수는 없습니다. 반대로, 중재자는 각 대학 대상에서 지원되지 않거나 지원할 수없는 협업 행동을 제공하며 프로토콜은 다 방향입니다.
◦ Corpeague는 관찰자 모드를 사용하여 중재자와 통신 할 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.