今回はCommandパターンについて書いていきます。
デザインパターンとは
デザインパターンとはソフトウェア開発の設計方法の事です。
『オブジェクト指向における再利用のためのデザインパターン』という本が出典で、全部で23種類のパターンが紹介されています。
Commandパターンとは
Commandパターンとは命令をオブジェクトとして作成し、それを順次実行するパターンです。
普通に関数を使って実行する場合と違い、命令の順番の変更や追加・削除を簡単にできる点が特徴です。
Commandパターンでは実際の命令を記述するCommand
、命令を受けるReceiver
、命令を保持してコントロールするInvoker
の3つの役割が登場します。
SwiftでのCommandパターンの実装方法
SwiftでのCommandパターンは下のように実装します。
今回Command
クラスを作っていますが、ここは関数をCommand
とみなす事も良いかと思います。
class Command { let receiver: Receiver init(receiver: Receiver) { self.receiver = receiver } func execute() {} } class HelloCommand: Command { override func execute() { receiver.action("Hello") } } class WorldCommand: Command { override func execute() { receiver.action("World") } } protocol Receiver { func action(message: String) } class PrintReceiver: Receiver { func action(message: String) { print(message) } } class Invoker { private var commands = [Command]() func addCommand(command: Command) { self.commands.append(command) } func execute() { for command in commands { command.execute() } } } let invoker = Invoker() let receiver = PrintReceiver() let hello = HelloCommand(receiver: receiver) let world = WorldCommand(receiver: receiver) invoker.addCommand(hello) invoker.addCommand(world) invoker.execute()
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (210件) を見る