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       !
 
 

좋은 웹페이지 즐겨찾기