Delegation

Delegation Pattern은 쉽게 표현하자면 어떤 객체에서 일어나는 이벤트에 관한 혹은 어떤 객체에 뿌려줄 데이터에 관한 코드를 다른 객체에서 작성해주는 것을 말합니다. 즉 A객체의 일을 B객체에서 대신해주는 일을 위임하는 행위입니다.

다시말하면 한 객체가 모든 일을 수행하는 것이 아니라 일부를 다른 객체에 위임한다.

예제1) 데이터를 저장하고 읽어오는 작업

class Data{
    ...
}
class A{
	Data data = new Data();
    public String getMsg(){
    	return data.getMsg();    
    }
}

예제2) Printer

public class RealPrinter{
   	public void print(){
        System.out.println("프린트");
    }
}

Main 클래스에서 Printer 객체의 print()가 실행되지만, 실제 구현을 보면 RealPrinter 객체의 print() 메소드를 위임받아서 실행하고 있다.

예제3)

상속대신 Delegation과 Interface를 사용함으로써 클래스는 훨씬 더 유연해진다.

Delegation Pattern 사용하는 이유?

  1. 여러 클래스에서 겹치는 매소드를 줄이기는것이 필요하기 위해 사용

  2. 하나의 독립적인 행동이 필요하지만, 미래에 이 행동이 바뀔 수 있는 상황에서 사용

  3. 하나의 상속된 형태를 위임과 함께 사용하기 위해 사용

Last updated

Was this helpful?