今回はFlyweightパターンについて書いていきます。
デザインパターンとは
デザインパターンとはソフトウェア開発の設計方法の事です。
『オブジェクト指向における再利用のためのデザインパターン』という本が出典で、全部で23種類のパターンが紹介されています。
Flyweightパターンとは
Flyweightパターンとはシングルトンパターンに似ているパターンで、インスタンスの使い回しをするパターンです。
シングルトンパターンは1つのインスタンスを保持するのですが、Flyweightパターンではキーとオブジェクトを1対1で保存します。
SwiftでのFlyweightパターンの実装方法
Flyweightパターンの実装は下のようになります。
下の例ではTarget
クラスのインスタンスの取得をFactory
経由で行っています。
このように、Factory
にキーと値のペアを保持してそれを使いまわすのがFlyweightパターンになります。
class Factory { static var dic = [String: Target]() static func target(str: String) -> Target { var target = dic[str] if target == nil { target = Target(str: str) dic[str] = target } return target! } } class Target { let str: String init(str: String) { self.str = str } func output() { print(str) } } Factory.target("A").output() Factory.target("B").output() Factory.target("C").output() Factory.target("A").output() Factory.target("B").output() Factory.target("C").output()
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (210件) を見る