タグ

DIに関するgologo13のブックマーク (16)

  • 今さら聞けないDiとspring

    5. DIの「D」とは? • Dependency:依存 • オブジェクトAは、オブジェクトBを使う • オブジェクトAにとって、オブジェクトBは「依存するオ ブジェクト」 • DIの「D」は、「依存するオブジェクト」を指す※ 5 オブジェクトA オブジェクトB 使う(メソッド呼出) ※「具象クラスへの依存」という解釈もあります 9. その①:使う側が自分で用意する • 使う側のプログラムが長くなる – 質ではない処理が入り込む • 依存するオブジェクトの設定を変更したり、具象クラスを変更する場合は 、使う側のプログラムを修正する必要がある 9 public class FooDao { private DataSource dataSource; public FooDao() { BasicDataSource dataSource = new BasicDataSource();

    今さら聞けないDiとspring
  • いまさらきけない「ドメインモデル」と「トランザクションスクリプト」 - ひがやすを技術ブログ

    このネタは、私自身も何度も書いてきたけど、結局意味のある結論になったためしがありませんが、再度考え直してみたいと思います。 「ドメインモデル」と「トランザクションスクリプト」をすごく簡単に説明すると、トランザクションスクリプトとは「アクションより起動される一連の手続き」、ドメインモデルとは「ドメイン内の名詞によって体系化されたモデル」です。 トランザクションスクリプト派は、「トランザクションスクリプトの方が書くのが簡単だし、業務アプリケーションにオブジェクト指向は、ほとんど必要ない」といいます。 それに対し、ドメインモデル派は、「ドメインモデルはオブジェクト指向を生かすことができるのでメンテナンス性が良い」と主張します。 ずっと平行線のままですね。 私は一番最初に「ユースケースと一対一にサービスクラスを設け、ビジネスロジックはサービスクラスに記述する」という主張をしてました。 記念すべき(

    いまさらきけない「ドメインモデル」と「トランザクションスクリプト」 - ひがやすを技術ブログ
  • 「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita

    イマイチ理解しきれていなかったDIに関して調べていところ、Google Guiceの解説がすごく分かりやすかったので、和訳してみました。 (ところどころ意訳気味です。明らかに解釈の誤った訳がありましたら、ご指摘ください) ちなみにGoogle Guiceというのは、Googleが開発したDIライブラリです。この例ではJavaが使用されていますが、Scalaでも使用可能です。最近Play Frameworkでも採用されたので話題になっているようです。 用語の定義 文を読む前に目を通すことで、内容をスムーズに理解できます。 用語 意味 文中の例

    「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita
  • DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita

    意外と分からずに、「とりあえず」とか「なんとなく」で使っちゃうパターンが多い系案件な気がして書いてみます。 こんな事ありませんか? DIとDIコンテナの違いを説明出来ない DIとサービスロケータの違いを説明出来ない DIを使ってるつもりが、サービスロケータになっている DI、サービスロケータが、ただの「パターン」の1つであることを理解してない DI(Dependency Injection)を正しく理解する そもそも、Dependeny Injectionを日語にするとどういう意味になるでしょうか。 多くの人が「依存性の注入」とか応えるのではないでしょうか? 私もそうでした。きっと何かで読んだのでしょう。 (wikipediaに「依存性の注入」と書いてありますね) 補足 なぜ依存性を注入してあげると良いのか、そのメリット等は後述しますが、 DIというのはただのパターンの1つです。 たまに

    DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita
    gologo13
    gologo13 2016/08/03
    DI Container と Service Locator は区別出来てなかったので学びあった。
  • 依存関係逆転の原則(DIP) - Strategic Choice

    依存関係逆転の原則(DIP:the Dependency Inversion Principle)上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべきである。「抽象」は実装の詳細に依存してはならない。実装の詳細が「抽象」に依存すべきである。どういうこと?手続き型は「方針」が実装の「詳細」に依存する構造になってしまう。 方針が詳細の変更に影響されてしまう好ましくない構造。 OOプログラミングでは「方針」「詳細」とも抽象に依存させることで、悪しき依存関係を逆転できる。 なんで?アプリケーションの方針を決めていて、他に対して影響を与えるモジュール(=言うなれば「偉い」ヒト)は上位。 上位が下位に依存してしまうと、上位が、下位の影響を受けてしまう。手続き型でよく見られた悪い依存関係。 筋的にはアプリケーションの存在理由である上位が下位に対して影響力を持つ

  • Succeeding with Dependency Injection

    gologo13
    gologo13 2016/04/17
    “Bastard Injection anti-pattern” / ServiceLocator anti-pattern は依存注入先のクラスでオブジェクトグラフを生成することになるので、Liskov Substitution Principleを破りやすい。 / DIによる生成したオブジェクトをctorに渡すのがbest
  • Google Guice 使い方メモ - Qiita

    Google Guice の使い方メモ。 Wiki の User's Guide をざっと試してみた。 特徴とか 読みは「ジュース」 Google が開発してる DI コンテナ ver 3.0 からは JSR330(Dependency Injection for Java)のリファレンス実装 設定は XML ではなく Java コード中に書く アノテーションと型引数をフル活用 2013/10/31 現在の最新は 3.0(4.0 の Beta 版が公開されてる) 環境

    Google Guice 使い方メモ - Qiita
  • Dependency Injection Framework for Swift - Swinjectの紹介 - Qiita

    以下のブログ記事の翻訳です1。 Dependency Injection Framework for Swift - Introduction to Swinject このブログでは、Swift 用の dependency injection (依存性の注入) フレームワークである Swinject を紹介します。Swift 2 では protocol extension が登場し、protocol oriented programming が推奨されるようになりました。さらに、Xcode 7 では UI testing ができるようになります。この状況の中で、アプリのコンポーネントをプロトコルによって疎結合にすることがより重要になってきます。疎結合にする方法で代表的なものが dependency injection です。 Dependency Injection (依存性の注入) まず

    Dependency Injection Framework for Swift - Swinjectの紹介 - Qiita
    gologo13
    gologo13 2016/02/12
  • What is Inversion of Control?

    Inversion of Control (IoC) can be quite confusing when it is first encountered. What is it? Which problem does it solve? When is it appropriate to use and when not?

    What is Inversion of Control?
    gologo13
    gologo13 2015/11/13
  • 第2回 Springの様々な設定記述 – AnnotationもJavaもあるんだよ | DevelopersIO

    よく訓練されたアップル信者、都元です。前回は、Springのコードを見ながらDIについて学びました。DIを使うと、「オブジェクトの生成と初期化」という宣言的な記述に親和性の高い情報と、「オブジェクトの利用」という手続き的な記述に親和性の高い情報を分離できることが確認出来ました。 Springはbean(Springの管理下にあるインスタンス)の生成と初期化に関する情報(Configuration metadataと呼びます)をXMLで受け取ります。XMLの一例は前回示した通りですが、このConfiguration metadataは色々な記述方法があります。 p及びcネームスペースの使用によるSpringの設定 XMLの閉じタグが目障りだ、という人がいるようです。では、こんなのはいかがでしょうか。 <?xml version="1.0" encoding="UTF-8"?> <beans

    第2回 Springの様々な設定記述 – AnnotationもJavaもあるんだよ | DevelopersIO
  • 第1回 はじめてのSpring Framework | DevelopersIO

    今やすっかりAWS屋、しかもアプリではなくインフラ寄りのプロダクトばかり触っている都元です。しかし元々はサーバサイドアプリ屋ということで、ボスのAWSへの想いとは裏腹に、ぼちぼちとサーバサイドJavaの話も出して行こうと思っています。 というわけで、Spring Frameworkについて色々書いて行こうと思うのですが、どう考えても1回で終わる内容ではないため、シリーズ形式(連載)とさせて頂きたいと思います。ただ、書くネタは無限にありそうなので、回数は反響に応じて調整しようかな、と思っています。ギブミー・いいね。 Javaフレームワークの世界 Javaはフレームワークがいっぱいあることが利点でもあり欠点でもあります。多くの言語にはデファクトと言えるフレームワークが存在します。あまり知らない分野なので深く触れてヤケドしたくはないのですが、例えばRubyだったらRailsでしょうし、Pytho

    第1回 はじめてのSpring Framework | DevelopersIO
  • Java開発を変える最新の設計思想「Dependency Injection(DI)」とは:ITpro

    「DIする」,「インジェクション(注入)する」──新しい技術に敏感なソフトウエア開発者たちの間で使われている言葉である。DIとは,「軽量コンテナ」を実現する新しい設計思想Dependency Injection(依存性注入)の略称である。同じ概念をIoC(Inversion of Control,制御の反転)と呼ぶ場合もある(詳細は後述)。「DIする」と言えば開発者の間では通用するぐらいに,この設計思想は注目されているのだ。 DIが注目される理由は簡単だ。ソフトウエア開発者の開発サイクルを大幅に改善するからだ。筆者が司会を担当した「軽量コンテナ」に関するパネル・ディスカッション(注1)では,DIを適用した軽量コンテナ「Spring Framework」のおかげで「睡眠時間が確保できるようになりました」と複数のパネリストが真顔でコメントしたほどである。DIは,それだけ有効な技術なのだ。 注1

    Java開発を変える最新の設計思想「Dependency Injection(DI)」とは:ITpro
  • Angularが嫌い - mizchi's blog

    僕は当にAngularが嫌いで、もはや許せないレベルに達していて、今ではもう当に使いたくない。 イカ理由。 APIがほんっっっっっとうに糞 趣味の問題といえばそうでもあるが僕は糞だと思う 実装が黒魔術 良識あるJSエンジニアなら Function.prototype.toString() しない 実際に一部のクロージャが破壊されてて挙動が直感に反する DirtyCheckの実装、表面的にもDirtyな挙動として現れるのでデータバインドとして何も嬉しくない Googleだから許される、みたいなコミュニティの驕りが当に嫌 Angularの都合だけでChromeでObject.observeを前倒しするのやめろ Angularの内部モジュール同士が密結合 DI, module, factory, それぞれ大きなテーマなのに密結合 使いはじめるとAngularをやめることが困難 パフォーマン

    Angularが嫌い - mizchi's blog
  • 猿でも分かる! Dependency Injection: 依存性の注入 - Qiita

    はじめに アホでもわかるように解説してみるテスト。 あらゆる方向で説明してみる。 大雑把にまとめると「依存していた部分を、外から注入すること」です。 勘違い、間違いが沢山ありそうなので、是非ご指摘を! 登場人物 (用語) 依存性の注入 (日語) Dependency Injection (英語) DI (Dependency Injectionの略語) 依存関係を設定ファイル等で定義してよろしくやってくれる「DIコンテナ」については書いておりません! 何が問題なの? クラス内などで固定化されたものがあると 柔軟性がない テストしにくい 解決方法 「依存している部分を外から注入する」 DIにおける「依存性」と「注入」の意味 依存性 (大雑把に)とあるクラスに、固定の定数、変数、インスタンスが入っちゃっている状態 つまりそのクラスは、その定数、変数、インスタンスに依存している 注入 そのクラ

    猿でも分かる! Dependency Injection: 依存性の注入 - Qiita
    gologo13
    gologo13 2014/09/24
    メリデメが書かれてて良い。
  • PHPでDI(Dependency Injection) - Qiita

    何かと話題のPHPでのDIについてまとめてみました。 そもそも DI(Dependency Injection)ってなんぞ? その名の通り、 依存性(Dependency)の 注入(Injection)です。 依存をクラス内で生成せずに外から設定します。 まだパッとしないので具体例を挙げて説明してみます。 まずDIでないパターン class Car { /** * @var EngineInterface */ private $engine; public function __construct() { $this->engine = new Engine(); } public function run() { $energy = $this->engine->burn(); } } このコードの良くない点 別のエンジンに変えたい時にCar.phpを修正しなければならない。 エンジン

    PHPでDI(Dependency Injection) - Qiita
    gologo13
    gologo13 2014/09/24
    わりとすーっと頭のなかに入るDIの説明だった
  • AngularJSでよく見るDependency Injectionについて - Qiita

    var myModule = angular.module('myModule', []); myModule.factory('greeter', function($window) { return { greet: function(text) { $window.alert(text); } }; }); というようにAngularJSでは独特の書き方をします。 このような書き方はDependency Injection(DI)という書き方だそうです。 AngularJSでのDIに関するドキュメント https://docs.angularjs.org/guide/di AngularJSでのDI部分のコード https://github.com/angular/angular.js/blob/master/src/auto/injector.js DIについて AngularJS

    AngularJSでよく見るDependency Injectionについて - Qiita
    gologo13
    gologo13 2014/09/24
    DI難しい
  • 1