Mediator
6664 단어 media
Mediator Pattern: 하나의 중개 대상 으로 일련의 대상 의 상호작용 행 위 를 밀봉 하 다.
왜 Mediator 를 사용 합 니까?
각 대상 간 의 상호작용 이 매우 많다.모든 대상 의 행위 조작 은 서로 에 게 의존 하고 한 대상 의 행 위 를 수정 하 는 동시에 많은 다른 대상 의 행 위 를 수정 하 는 것 과 관련 될 수 있다.만약 에 Mediator 모델 을 사용 하면 각 대상 간 의 결합 을 느슨 하 게 할 수 있다.Mediator 와 의 관계 에 만 관심 을 가지 고 여러 쌍 의 관 계 를 한 쌍 의 관계 로 만 들 면 시스템 의 복잡성 을 낮 추고 확장 성 을 높 일 수 있다.
Event.java
package com.flyingh.event;
import com.flyingh.mediator.Mediator;
public interface Event {
void onEventA();
void onEventB();
void onEventC();
void onEventD();
void setMediator(Mediator mediator);
}
Mediator.java
package com.flyingh.mediator;
public interface Mediator {
void actionA();
void actionB();
void actionC();
void actionD();
}
A.java
package com.flyingh.event;
import com.flyingh.mediator.Mediator;
public class A implements Event {
private Mediator mediator;
public Mediator getMediator() {
return mediator;
}
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
@Override
public void onEventA() {
mediator.actionA();
}
@Override
public void onEventB() {
System.out.println("EventB ,A !");
}
@Override
public void onEventC() {
System.out.println("EventC ,A !");
}
@Override
public void onEventD() {
System.out.println("EventD ,A !");
}
}
B.java
package com.flyingh.event;
import com.flyingh.mediator.Mediator;
public class B implements Event {
private Mediator mediator;
@Override
public void onEventB() {
mediator.actionB();
}
@Override
public void onEventA() {
System.out.println("EventA ,B !");
}
@Override
public void onEventC() {
System.out.println("EventC ,B !");
}
@Override
public void onEventD() {
System.out.println("EventD ,B !");
}
@Override
public void setMediator(Mediator mediator) {
// TODO Auto-generated method stub
this.mediator = mediator;
}
}
C.java
package com.flyingh.event;
import com.flyingh.mediator.Mediator;
public class C implements Event {
private Mediator mediator;
@Override
public void onEventC() {
mediator.actionC();
}
@Override
public void onEventA() {
System.out.println("EventA ,C !");
}
@Override
public void onEventB() {
System.out.println("EventB ,C !");
}
@Override
public void onEventD() {
System.out.println("EventD ,C !");
}
@Override
public void setMediator(Mediator mediator) {
// TODO Auto-generated method stub
this.mediator = mediator;
}
}
D.java
package com.flyingh.event;
import com.flyingh.mediator.Mediator;
public class D implements Event {
private Mediator mediator;
@Override
public void onEventD() {
mediator.actionD();
}
@Override
public void onEventA() {
System.out.println("EventA ,D !");
}
@Override
public void onEventB() {
System.out.println("EventB ,D !");
}
@Override
public void onEventC() {
System.out.println("EventC ,D !");
}
@Override
public void setMediator(Mediator mediator) {
// TODO Auto-generated method stub
this.mediator = mediator;
}
}
ConcreteMediator.java
package com.flyingh.mediator;
import com.flyingh.event.Event;
public class ConcreteMediator implements Mediator {
private Event a;
private Event b;
private Event c;
private Event d;
public ConcreteMediator(Event a, Event b, Event c, Event d) {
super();
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
@Override
public void actionA() {
b.onEventA();
c.onEventA();
d.onEventA();
}
@Override
public void actionB() {
a.onEventB();
c.onEventB();
d.onEventB();
}
@Override
public void actionC() {
a.onEventC();
b.onEventC();
d.onEventC();
}
@Override
public void actionD() {
a.onEventD();
b.onEventD();
c.onEventD();
}
}
Client.java
package com.flyingh.demo;
import com.flyingh.event.A;
import com.flyingh.event.B;
import com.flyingh.event.C;
import com.flyingh.event.D;
import com.flyingh.event.Event;
import com.flyingh.mediator.ConcreteMediator;
import com.flyingh.mediator.Mediator;
public class Client {
public static void main(String[] args) {
Event a = new A();
Event b = new B();
Event c = new C();
Event d = new D();
Mediator mediator = new ConcreteMediator(a, b, c, d);
a.setMediator(mediator);
b.setMediator(mediator);
c.setMediator(mediator);
d.setMediator(mediator);
a.onEventA();
System.out.println("**********");
b.onEventB();
System.out.println("**********");
c.onEventC();
System.out.println("**********");
d.onEventD();
}
}
프로그램 실행 결 과 는 다음 과 같 습 니 다.
EventA ,B !
EventA ,C !
EventA ,D !
**********
EventB ,A !
EventB ,C !
EventB ,D !
**********
EventC ,A !
EventC ,B !
EventC ,D !
**********
EventD ,A !
EventD ,B !
EventD ,C !
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Media Query를 사용하여 데스크톱, 태블릿 및 모바일을 타겟팅하는 방법은 무엇입니까?미디어 쿼리는 화면 크기와 해상도가 다른 다양한 장치에 스타일 시트를 제공하는 데 널리 사용되는 방법입니다. 여러 장치에서 웹 사이트의 모양을 변경하는 데 사용됩니다. 미디어 쿼리는 미디어 유형과 참 또는 거짓이 될...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.