[kotlin]Delegate Pattern을 알아보자
[디자인 패턴] 위임 패턴(Delegate Pattern)
1. Delegate 패턴이 나온 이유
동일한 기능에 대해 여러번 반복적인 구현을 해야 될때 상속이라는 기능을 사용한다.
- 이미 구현한 코드를 클래스를 상속시켜 사용하면 재활용이 가능하기 때문이다.
하지만 상속을 사용하게 되면 다음과 같은 문제점이 생긴다.
- 부모 클래스의 구현이 자식 클래스에 드러나게 된다. (특정 기능을 다른 객체에게 맡기기위해서 부모 클래스에서는 해당 메서드를 private로 설정할 수 없기 때문이다.) → 캡슐화 파괴
- 부모 클래스 구현에 있어서 어떠한 변화가 일어난다면 크든 작든 자식클래스에도 영향을 끼치게된다.
Delegate 패턴은 상속과 다르게 객체 안에 새로운 기능 혹은 객체를 구성하는 composition을 기반으로 구성된다.
- composition 패턴은 각 클래스의 캡슐화를 유지할 수 있을 뿐더러 해당 각 클래스는 한 가지 일에 집중할 수 있기 때문이다.
2. Delegate 패턴 구현
- 1개의 인터페이스를 2개의 클래스에서 구현한다.
- 메소드 구현과정에서 1개의 클래스가 직접 구현하고, 나머지 다른 클래스는 구현한 클래스를 가져다가 사용하는 식으로 한다. (위임)