조합 설계 모드

957 단어
대상 을 트 리 구조 로 조합 하여 '부분 - 전체' 의 차원 구 조 를 나타 내 고 Composite 는 사용자 로 하여 금 하나의 대상 과 조합 대상 의 사용 에 일치 성 을 가지 게 하고 사용 자 는 조합 구조 중의 모든 대상 을 통일 적 으로 사용 할 수 있다.(주: 자체 디자인 모드 의 블랙 북 선택)
/*:
Component
*/
protocol Shape {
    func draw(fillColor: String)
}
/*:
Leafs
*/
final class Square : Shape {
    func draw(fillColor: String) {
        print("Drawing a Square with color \(fillColor)")
    }
}

final class Circle : Shape {
    func draw(fillColor: String) {
        print("Drawing a circle with color \(fillColor)")
    }
}

/*:
Composite
*/
final class Whiteboard : Shape {
    lazy var shapes = [Shape]()

    init(_ shapes:Shape...) {
        self.shapes = shapes
    }

    func draw(fillColor: String) {
        for shape in self.shapes {
            shape.draw(fillColor: fillColor)
        }
    }
}
/*:
### Usage:
*/
var whiteboard = Whiteboard(Circle(), Square())
whiteboard.draw(fillColor: "Red")

좋은 웹페이지 즐겨찾기