テックスコアのデザインパターンをSwiftで書く (Adapterパターン)


はじめに

TECHSCOREのデザインパターンを同期と勉強会することになったので、それをSwiftで書いてみることにした

詳細はリンク先の記事をみてください

Adapterパターン(継承)

Adapter パターン 1

この場合だとTaroクラスは変更したくないが、新しい関数organizeClass()を実装したい時に使える

protocol Chairperson {
    func organizeClass()
}

class Taro {
    func enjoyWithAllClassmate() {
        print("みんなで楽しむ")
    }
}

class NewTaro: Taro, Chairperson {
    func organizeClass() {
        super.enjoyWithAllClassmate()
    }
}

Adapterパターン(委譲)

protocol Chairperson {
    func organizeClass()
}

class Taro {
    func enjoyWithAllClassmate() {
        print("みんなで楽しむ")
    }
}

class Hanako: Chairperson {
    let taro = Taro()

    func organizeClass() {
        taro.enjoyWithAllClassmate()
    }
}

エクステンションを使うパターン

protocol Chairperson {
    func organizeClass()
}

class Taro {
    func enjoyWithAllClassmate() {
        print("みんなで楽しむ")
    }
}

extension Taro: Chairperson {
    func organizeClass() {
        enjoyWithAllClassmate()
    }
}

参考文献

しめ鯖日記 Swiftで学ぶデザインパターン9 (Adapterパターン)