중개 모델
중개 모델 (중재자 패턴) 오브젝트와 복수의 클래스들 사이의 통신의 복잡성을 감소시키기 위해 사용된다. 이 모델은 일반적으로 유지하는 코드를 더 쉽게, 다른 클래스, 느슨하게 결합에 대한 지원 간의 통신을 처리하는 중간 클래스를 제공합니다. 중재자 패턴의 행동 패턴을 속한다.
소개
의도 : 오브젝트의 세트를 캡슐화시킨 오브젝트의사용은 느슨한 결합을 명시 적 상호 참조에서 중간 유지 객체를 상호 작용하고, 독립적으로 상호 작용을 변경할 수있다.
주로 해결 : 물체와 물체 사이의 관계가 많이 있는데, 이는 필연적으로 시스템의 구조로 이어질 매우 복잡하게하지만, 목적이 변경 될 경우, 우리는 또한 그와 관련된 객체를 추적하고 적절한 처리를 할 필요 .
이 때 사용하는, 서로 결합 여러 클래스가 네트워크 구조를 형성한다.
수정하는 방법 : 상기 한 네트워크 구조 별 구조로 구분된다.
키 코드 : 동료 사이의 통신은 별도의 클래스를 캡슐화하는 객체.
적용 예 : 1, WTO에 중국의 가입은 여러 나라가 서로 복잡한 구조와 무역 이전에, 그것은 서로 무역 WTO 국가입니다.2, 공항 예약 시스템. 3, C (컨트롤러) M (모델)와 V (보기) 중재자 MVC 프레임 워크.
장점 : 1 클래스의 복잡도를 감소 일대로 변환한다.2, 클래스 사이의 각각의 디커플링. 3, 데메테르의 원칙에 부합한다.
단점 : 대형 브로커는 복잡하고 유지하기 어려워 질 것입니다.
사용 시나리오 : 한 개체의 구조를 재사용하도록 혼란스럽고 어려운 간의 의존성에 이르는 시스템보다 복잡한 참조 관계의 물체 사이에 존재한다.2, 여러 클래스의 동작을 캡슐화하고, 너무 많은 하위 클래스를 생성하지 않으 중산층을 할 수 있습니다.
참고 :이 때 책임 혼란을 사용할 수 없습니다.
실현
의는 중간 모델 대화방의 예를 통해 살펴 보겠습니다. 예, 여러 사용자가 방, 대화방 채팅 메시지를 보낼 수, 메시지는 모든 사용자에게 표시됩니다. 우리는 두 클래스의채팅방및사용자를 작성합니다.사용자는 뉴스를 공유 할 수있는채팅방의방법을 개체.
MediatorPatternDemo,우리가 그들 사이의 통신을 표시하는사용자클래스 객체의 사용을 입증한다.
1 단계
중간 클래스를 만듭니다.
ChatRoom.java
가져 오기 java.util.Date; 공용 클래스 채팅방 { 공공 정적 무효 showMessage (사용자 사용자, 문자열 메시지) { 에서 System.out.println (새 Date (). toString () + "["+ User.getName () + "]"+ 메시지); } }
2 단계
사용자 클래스를 만듭니다.
User.java
공용 클래스 사용자 { 개인 문자열 이름; 공공 문자열 getName () { 이름을 반환; } 공공 무효에서는 setName (문자열 이름) { this.name = 이름; } 공용 사용자 (문자열 이름) { this.name = 이름; } 공공 무효 sendMessage 첨부 (문자열 메시지) { ChatRoom.showMessage (이 메시지); } }
3 단계
그들 사이의 통신을표시하기위해사용자오브젝트를 사용한다.
MediatorPatternDemo.java
공용 클래스 MediatorPatternDemo { 공공 정적 무효 메인 (문자열 []에 args) { 사용자 로버트 = 새 사용자 ( "로버트"); 사용자 존 = 새 사용자 ( "존"); robert.sendMessage ( "안녕 요!"); john.sendMessage ( "안녕하세요 로버트!"); } }
4 단계
출력을 확인합니다.
목 1월 31일 인도 표준시 16시 05분 46초 2013 [로버트] :! 안녕하세요 존! 목 1월 31일 인도 표준시 16시 05분 46초 2013 [존] :! 안녕하세요 로버트!