しめ鯖日記

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

Swiftで学ぶデザインパターン21 (Facadeパターン)

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

デザインパターンとは

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

Facadeパターンとは

Facadeパターンとは複数クラスにまたがる処理を整理する為のパターンです。
複数クラスにまたがる処理をFacadeクラスに書いて開発者からはFacadeクラスだけを使うようにします。
そうすることで開発者は裏側の複数クラスを意識せずに開発することができます。

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

SwiftでのFacadeパターンは下のように実装します。
BookListReadListがあり、開発者が読んだ事ある本の一覧を取得したい場合を想定しています。

普通に実装する場合はBookListReadListの中身を突き合わせて一覧を取得する形になります。
今回のケースではその処理をFacade内に移動する事で開発者はFacade().readBooks()で簡単に読んだ事ある本の一覧を取得できるようにしています。

class Facade {
    func readBooks() -> [Book] {
        return BookList.books.filter() { (book: Book) -> Bool in contains(ReadList.readBookIds, book.id) }
    }
}

struct Book {
    let id: Int!
    let name: String!
}

class BookList {
    static let books = [
        Book(id: 1, name: "本1"),
        Book(id: 2, name: "本2"),
        Book(id: 3, name: "本3")
    ]
}

class ReadList {
    static let readBookIds = [1, 3]
}

print(Facade().readBooks().count)

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

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