Update!

Swift: デザインパターン > 構造パターン > Bridge

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。
デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。

自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。

今回は 構造パターンBridge について説明します。

目次

  • [構造] Bridge パターン
  • まとめ

[構造] Bridge パターン

クラスなどの実装と、呼出し側との橋渡し(Bridge)するクラスを用意し、実装機能分離することで、実装の変更や機能追加を容易にする。

サンプルコード

AbstractColor.swift

class AbstractColor {
    var impl: Implementor?
    
    func implMethod() {
        impl?.implMethod()
    }
}

ConcreteWhiteColor.swift

class ConcreteWhiteColor: AbstractColor {

}

ConcreteBlackColor.swift

class ConcreteBlackColor: AbstractColor {

}

ImplementWhiteColor.swift

class ImprementWhiteColor: Implementor {
    func implMethod() {
        print("siro")
    }
}

ImplementBlackColor.swift

class ImprementBlackColor: Implementor {
    func implMethod() {
        print("chro")
    }
}

ViewController.swift

protocol Implementor {
    func implMethod()
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let color1 = ConcreteWhiteColor()
        color1.impl = ImprementWhiteColor()
        color1.implMethod()
        
        let color2 = ConcreteBlackColor()
        color2.impl = ImprementBlackColor()
        color2.implMethod()
    }
}

実行結果

siro
chro

まとめ

AbstractColor という抽象クラスと protocol Implementor の Bridge(橋渡し)により、実装機能分離されています。
これにより、サブクラス(実装)を追加しても、その都度機能を実装する必要がなくなるため、プロジェクトのメンテナンス性が向上します。
次回は 構造パターンComposite パターンを説明したいと思います。

この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents