[swift] 클래스의 컴포지트(Composite) 패턴 개념
컴포지트 패턴은 객체의 구조를 표현할 때 사용되는 패턴으로, 객체들 간의 계층 구조를 구성하여 부분-전체 계층을 표현하는 데 적합합니다. 이 패턴은 단일 객체와 객체들의 컬렉션을 동일하게 다룰 수 있도록 합니다. 이로써 클라이언트는 개별 객체든, 객체들의 집합이나, 두 가지를 동시에 다루는데 모두 편리합니다.
컴포지트 패턴의 장점
- 계층적인 구조를 표현하기 용이하여 객체 간의 관계를 명확히 드러내줍니다.
- 클라이언트 코드가 단일 객체든, 객체들의 집합이든 구분없이 동일하게 다룰 수 있어 코드 유연성을 높여줍니다.
Swift에서의 컴포지트 패턴 예제
다음은 Swift로 구현된 간단한 컴포지트 패턴의 예제입니다.
protocol Component {
func operation()
}
class Leaf: Component {
func operation() {
print("Leaf operation")
}
}
class Composite: Component {
private var children: [Component] = []
func add(_ component: Component) {
children.append(component)
}
func remove(_ component: Component) {
if let index = children.firstIndex(where: { $0 === component }) {
children.remove(at: index)
}
}
func operation() {
print("Composite operation")
for child in children {
child.operation()
}
}
}
위의 예제에서 Component
프로토콜은 컴포지트 패턴의 구성 요소를 나타내고, Leaf
클래스와 Composite
클래스는 해당 프로토콜을 구현하며, 각각 단일 객체와 객체들의 집합을 나타냅니다.
컴포지트 패턴은 객체들 간의 계층 구조를 표현할 때 효과적으로 사용될 수 있으며, Swift에서도 유용하게 활용될 수 있습니다. 관련 자료를 참조하면 더 많은 정보를 얻을 수 있습니다.