View 의 기본 구조에 대해서 알아봅니다.
View 의 계층 구조
View 의 기본 구조는 View객체 간의 계층으로 이루어져 있습니다. 소프트웨어 모델로 이야기하자면 DOM(Doument Object Model)을 따르고 있고, 패턴(Pattern)으로 이야기하자면 Gof 디자인 패턴의 Composite 패턴이 적용된 구조입니다.
- View : 안드로이드 뷰 클래스의 최상위 클래스입니다.
- ViewGroup : 뷰의 서브 클래스여서 화면에 출력되지만, 뷰그룹 자체만의 UI는 가지지 않습니다. 화면에 출력은 되지만 아무것도 안 나온다는 얘기입니다. 일반적으로 레이아웃 클래스들이 사용됩니다.
- View는 Composite 패턴 구조로 이루어져 있습니다.
Composite 패턴?
컴퍼지트 패턴은 부분-전체의 관계를 갖는 객체들을 정의할 때 유용합니다. 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용할 수 있습니다. 예를 들어 컴퓨터를 모델링 한다고 생각해 보자. 컴퍼지트 패턴을 적용한다면 이렇게 구성할 수 있다.
위 그림에서 컴퓨터 디바이스는 추상 클래스이고 컴퓨터 클래스도 컴퓨터 디바이스 클래스의 하위 클래스로 구성이 됩니다.
- 컴퓨터 디바이스 클래스가 Component 역할을 합니다.
- Keyboard, Body, Monitor 클래스는 각각 Leaf 역할을 합니다.
- Computer 클래스는 Composite 역할을 합니다.
컴퍼지트 패턴의 컬레보레이션을 나타내보면 다음과 같습니다.
- Component : 구체적인 부분, 즉 Leaf 클래스와 전체에 해당하는 Composite 클래스에 공통 인터페이스를 정의합니다.
- Leaf : 구체적인 부분 클래스로 Composite 객체의 부품으로 설정합니다.
- Composite : 전체 클래스로 복수 개의 Component를 갖도록 정의합니다. 그러므로 복수 개의 Leaf, 심지어 복수 개의 Composite 객체를 부분으로 가질 수 있습니다.