LoginSignup
11
10

More than 5 years have passed since last update.

Typhoon Framework はじめる前に

Posted at

DI : Dependency Injectionとは

自分で調べてください:-p
DIについては詳しい人たちがまとめてくれているので、僕はあくまでもObjective C上のDIコンテナである、Typhoonに関する話だけを書こうと思います。
Javaで発展したデザインパターンなので、サンプルとしてはGoogle Guiceがオススメです。

Typhoon Framework

Objective C用のDIコンテナです。Google Guiceのような使い勝手とまでは言いませんが、自分でなんちゃってDIをやるよりははるかに柔軟です。

公式サイト

ただ、このページは 無駄に いろいろな情報が載っているので、github上のドキュメント見た方がシンプルで分かりやすいです。
https://github.com/typhoon-framework/Typhoon/wiki/Assembling-Components-with-Blocks

Install方法

Cocoa Podsから入れられます。
http://cocoapods.org/?q=Typhoon

Cocoa Podsを使っていない人は、、まずcocoa podsを入れましょう:-p
http://guides.cocoapods.org/using/getting-started.html

DIコンテナへの依存

DIを導入するために、Typhoon Frameworkに強依存するのは本末転倒だと思います。
それを回避するため、下記のようなInjectorインタフェイスを用意し、DIのInjector自体を注入する形で設計を進めて行きます。

BTKInjector.h
#import <Foundation/Foundation.h>

@protocol BTKInjector <NSObject>

- (id) instanceForProtocol : (Protocol *)protocol;

@end

@interface BTKInjectorDefault : NSObject

+ (id<BTKInjector>) get;

@end

これによりTyphoon Frameworkに関する記述は局所化できるので、他のDIコンテナにも簡単に乗り換えることができます。コンポーネント間のインタフェイスを明示的に定義し、依存関係の定義はDIにまかせる。DIの基本ですね。

Typhoon Framework独自の機能について

Autowiring等も触ってはみましたが、黒魔術的な側面が強すぎてかえって見通しが悪くなるように感じます。非常に多機能で面白いフレームワークですが、まずはシンプルに使ってみることをお勧めします。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10