iOSアプリのAdapterパターン
最近iOSアプリを作ってて
Adapterパターンってなんだっけ?って思ったのでメモ
iOSアプリを作ってるとよくdelegateというプロパティ名が出てきます。
と、ここまで書いたところでわかりやすい記事をいくつか見つけましたが続けます。
http://www.gadgety.net/shin/tips/mac/ios_delegate.html
http://supportdoc.net/support-iphone/send_data_2_1.html
そもそもAdapterパターンってなんだっけ
よくある説明はwikipediaとか見てもらうとして、
以下の様な社長クラスを考えます。
class Boss #コンストラクタ def initialize end #資料のコピーを取るメソッド def copyPrint #紙を持ってプリンタの前まで行く #プリンタの電源を付ける #資料を置いてコピーボタンを押す #原本とコピーを取り出す end end
このようなクラスを作れば、社長にコピーを頼むときは
boss = Boss.new boss.copyPrint
のように書けます。
ただ、資料のコピーをとるのは社長の仕事ではないです。
こんな雑用は秘書にやらせたいです。
上のクラスを↓のように書き換えます。
class Boss #コンストラクタ def initialize hisho @hisho = hisho end #資料のコピーを取るメソッド def copyPrint @hisho.copyPrint end end
このようにクラスを書き換えれば、
boss = Boss.new hishoA boss.copyPrint
のように書け、社長に資料のコピーを頼んでいるのに、
実際には秘書Aに資料のコピーを頼んだのと同じ結果になります。
こうすることの利点は
・boss.copyPrintという呼び方は変えずに
・Bossクラスに手を加えずに
外から社長の振る舞いを変更出来るということです。
秘書Aの仕事が遅い時はどうすればよいでしょうか。
そんな時は新たに秘書Bを雇い(作成して)
資料のコピーの仕方を教えて(copyPrintを実装して)
下記のように書けばいいだけです。
boss = Boss.new hishoB boss.copyPrint
このように、Bossクラスには全く手を加えずに、
Bossクラスの実装を入れ替えることが出来ました。
iOSアプリのAdapterパターン
iOSアプリでは、Viewがどのように動くかを決定するために、
delegateプロパティに値をセットする必要があります。
社長クラスのhisho的なやつです。
ここにコールバックをまとめたクラスをセットして上げることで、
ボタンがタップされた時どうするか、キャンセルボタンが押された時どうするか
といった振る舞いを、動的に変更することができてるみたいです。
噂のRubyMotionで書いてるんですが、これがかなり楽しい・・・
iOSアプリ作ってみたいけどObjective-Cはちょっと・・・という方におすすめです。
ドラクエの相場情報をランキングするサイト作った
作りました
DQX chart
http://dqxchart.nabnet.net/
iterm2の設定
- フォントをMig 1Mに変更
- フォントサイズを18ptへ