しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Swiftで学ぶデザインパターン13 (Compositeパターン)

今回はCompositeパターンについて書いていきます。

デザインパターンとは

デザインパターンとはソフトウェア開発の設計方法の事です。
オブジェクト指向における再利用のためのデザインパターン』という本が出典で、全部で23種類のパターンが紹介されています。

Compositeパターンとは

Compositeパターンとは木構造を表すデザインパターンです。
複雑な構造を表す為に利用します。

SwiftでのCompositeパターンの実装方法

下の例は、チームがありチームにメンバーとチームが属せるケースを想定しています。
チームとメンバーがJoinableObjectに準じる事でチーム内にチームを含めたりメンバーを含める事ができています。

protocol JoinableObject {
    func execute()
}

class Team: JoinableObject {
    var array: [JoinableObject] = []
    
    func execute() {
        for object in array {
            object.execute()
        }
    }
}

class Member: JoinableObject {
    let name: String
    
    init(_ name: String) {
        self.name = name
    }
    
    func execute() {
        print("\(name)です")
    }
}

let memberA = Member("A")
let memberB = Member("B")
let memberC = Member("C")
let teamA = Team()
teamA.array.append(memberA)
teamA.array.append(memberB)
teamA.array.append(memberC)

let memberD = Member("D")
let teamB = Team()
teamB.array.append(teamA)
teamB.array.append(memberD)

teamB.execute()

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン