Objective-Cの手習い:AbstractFactoryパターン

今回は『Java言語で学ぶデザインパターン入門』からAbstractFactoryパターン。

AbstractFactory

クラス数が多いのでクラス図を示しておこう。

とりあえずAbstract Factoryとは……
協調して働くセットのオブジェクトをまとめて作製するためのインターフェイスをプログラマーに提供するパターン。プログラマーは抽象クラスであるFactoryの具象クラスを何らかの方法で得て、その抽象的なインターフェイスを通じてセットのオブジェクトを生成する。

今回もほとんどそのままの移植で、Objective-Cらしいところはあまりない。
唯一Objective-Cに依存した部分は、Factoryクラスの具象クラス生成部。『Java言語で学ぶデザインパターン入門』ではJavaのClassクラスを使用して生成しているが、Objective-CではNSClassFromString関数を使用してClassクラスのインスタンスを生成し、そこからFactoryの具象クラスのインスタンスを生成する。


           Factory* factory = nil;
           Class factoryClass;
           factoryClass = NSClassFromString(classname); 
           if(!factoryClass) {
              return nil;
            }
            else {
              factory = [[[factoryClass alloc] init] autorelease];
              return factory;
            }

JavaのコードのようにExcetionを拾っていないので、呼び出し側で対処する必要がある。どうもObjective-CではExceptoinを積極的に使用していこうという思想ではないようだ。プログラマが考えよってことらしい。
今回はクラスが見つからない場合nilがかえるので呼び出し側では


        factory = [Factory factoryFromClassName:className];
            if (!factory) {
                printf("Class %s is not found.\n",argv[1]);
             }

としている。

参照:Foundation Framework Reference

コメント

  1. ご無沙汰してます。

    ちょっと時間が裁ってしまいましたが、やっとゼミでの発表をまとめることができました。Objective-CでMac上での発表はゼミでもはじめてのことみたいです。第一号になれました (^^)v

    ココでの記事と、突然のメールにもかかわらずコードまで見ていただいてアドバイスいただいたおかげです、先生 !

    亜梨

    返信削除
  2. どうも、

    iPhoneの開発関連書籍が解禁になっているので、Objective-Cについてはあの頃よりも巷で情報を得やすくなっていますよ。

    返信削除

コメントを投稿

このブログの人気の投稿

Google Calaboration

Scrivener 日本語チュートリアル

EagleFiler is the best organizer software on MacOS X