iOSオールスターズ2 https://eventdots.jp/event/602872
Dependency Injectionとはコンポーネント間の依存関係をプログラムのソースコードから排除し、外部の設定ファイルなどで注入できるようにするソフトウェアパターンである ってwikipedia先生が言ってました。 Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 - Qiita を読んでいろいろ考えたので、なんで今さらって感じのことを書きます。 ScalaでDIというとDIコンテナとかCake PatternとかReader Monadとかって話になっちゃうんですが、これらはいかにかっこよくDIするかの話であって、別にこういった道具やパターンを使わなくてもDIは可能という話です。 Constructor Injection 簡単な例で考えます。今ここにUserRepositoryにべったり依存し
DIを使わない状態ではUserRepositoryというインターフェースが定義されているのにもかかわらず、UserServiceはUserRepositoryImplの参照も持っていました。 これではせっかくインターフェースを分離した意味がありません。 UserServiceがUserRepositoryインターフェースだけを参照(依存)するようにすれば、具体的な実装であるUserRepositoryImplの変更に影響されることはありません。 この問題を解決するのがDIの目的です。 それではDIのインジェクタを加えて、上記のクラス図を修正しましょう。 謎のインジェクタの登場によりUserServiceからUserRepositoryImplへの参照がなくなりました。 おそらくインジェクタは何らかの手段でサービスであるUserRepositoryImpl(Dependency)をクライアン
2. 構造化設計とオブジェクト指向設計の思想の違いを理解する そもそも、 DI の考え方を理解する前提として、 オブジェクト指向的なプログラム設計 について理解しておかなくてはならない 伝統的な構造化型プログラミングではプログラムを処理の固まり単位に分割し、メインから順次下位のサブルーチンをコールする 一方、オブジェクト指向できちんと設計されたシステムであれば、 「特定の責務」を持ったオブジェクト が互いにメッセージをやりとりすることで特定の機能が実現される 3. 構造化型アーキテクチャ プログラムを順次細分化された 処理の集合 として構築 データはパラメータやグローバル変数として処理とは別に管理 プログラムの状態としてのデータがカプセル化されていないため、上位関数は下位関数の処理の細部を原則知っていることが前提(実質的に巨大なアルゴリズム) バッチなどの定型処理や小規模スクリプトなど単純
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く