タグ

diに関するkasahiのブックマーク (12)

  • DI (依存性注入) って何のためにするのかわからない人向けに頑張って説明してみる - Qiita

    追記 2022/11/12 追記 この記事読んで、DI 便利だなって思ったらこちらも併せて読んでみてください。クリーンアーキテクチャーの開設の中で依存性逆転の説明が出てきます。難しいかもしれませんが、一度理解すればつぶしが効く考え方なので腰を据えて読んでみてください。 文 ここでは、最近のそこそこの規模のアプリだと大体使われてる(と私は思ってる)Dependency Injection(DI)について、何故使ってるのか?というのを私の理解で書いていきたいと思います。 今回の対象言語は C# ですが、DI 使ってる言語であれば大体同じ事情なのかなと思います。 単体テストしたいよね アプリケーションを作るとうまく動いているかテストをすると思います。 たとえ、そのアプリがハローワールドだとしても動かして目視で確認してると思います。 もうちょっとアプリの規模が大きくなってくるとクラス単位やクラス

    DI (依存性注入) って何のためにするのかわからない人向けに頑張って説明してみる - Qiita
  • 1分で分かる Dependency Injection in Swift - Qiita

    この記事は第2のドワンゴ Advent Calendar 2017 14日目です。 昨日はnaariさんで、「TASBOTを作る」でした。 はじめに 前提として、プログラムは日々変わっていくものだと思います。 クラス同士の密結合がある場合、一部の変更が加わっただけでも変更があったクラスを扱うファイルを全て変更しないといけないかもしれません。 密結合という話で良く例として挙げられるものがシングルトンでの依存関係だと思います。 ここではシングルトンを採用しない例をし、その後でDependency Injectionのお話をしようと思います。 Dependency Injectionはイニシャルを取られたDIと略されます。 シングルトンに関して知っている方は、Dependency Injectionとはまで飛ばしてもらっても構いません。 シングルトンとは GoFにより定義されたデザインパターンの

    1分で分かる Dependency Injection in Swift - Qiita
  • 依存性の注入を使うと何が嬉しいのか - Qiita

    依存性の注入やDIコンテナってよく聞くのですが、いまいちメリットが良くわからない! ということが多いので、AndroidのDIコンテナである、Daggerについてまとめました。 依存性の注入(Dependency injection) 依存性の注入(いそんせいのちゅうにゅう、英: Dependency injection)とは、 コンポーネント間の依存関係をプログラムのソースコードから排除し、外部の設定ファイルなどで注入できるようにするソフトウェアパターンである。 英語の頭文字からDIと略される。 https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5 と説明されているのですが、実際どのようなメリットがあるのかよくわかりません。 依存性の注入が無いAndroidのコード例 re

    依存性の注入を使うと何が嬉しいのか - Qiita
  • テンプレートエンジンのくせに最近のPHPはオブジェクト志向やらDIやらイキり始めた件 - JavaScriptをがんばるブログ

    ※2017/05/29現在Repositoryの章までしか聞けていません。聞いている際に浮かんだインスピレーションが揮発しないよう永続化する為に書いた記事です。 php-genba.shin1x1.com まさか日語でこの内容を聞けるコンテンツがあるとは思わなかったです。 これは英語をマスターすれば Sound of Symfony The Laravel Podcast Ruby on Rails Podcast JavaScript Air devchat.tv などのPodcastからより多くの興奮を得られる事を意味します。 プログラミング経験3年、細かい修正ばかりで設計レベルの経験値が全くない自分ですが、各章について以前から個人的に思っていた事、お三方の知見からインスピレーションを得た内容を書き残します。 1. DI 「依存性の注入(Dependency Injection)」と

    テンプレートエンジンのくせに最近のPHPはオブジェクト志向やらDIやらイキり始めた件 - JavaScriptをがんばるブログ
  • DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita

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

    DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita
    kasahi
    kasahi 2016/08/04
  • 依存性注入(DI)の解説とやり方 - Qiita

    依存性注入 (Dependency Injection) は、クラスを単体テスト可能にするために使われるテクニックです。 これが意識されていないが故に単体テストが全くできないコードをよく見かけます。 単体テストの際には必ず必要になる知識なので、解説しておきます。 以下のサンプルでは PHPUnit を利用しています。 悪い例: 単体テストができないケース 以下のような Foo クラスの play() メソッドは、単体テストケースが書けません。 class Foo { public function play() { $bar = new Bar(); if ($bar->getSomething() === 1) { return true; } return false; } } play() 内で外部クラス Bar をインスタンス化しています。つまり Foo::play() メソッドは

    依存性注入(DI)の解説とやり方 - Qiita
  • Pimpleでシンプルに正しくDIを理解する

    オブジェクト指向でソフトウェアを実装していると、オブジェクトの生成に一連の手続きが必要なものがでてきます。このような生成に関する手続きがあちこちのソースコードへ散在すると、望ましくない状況になることは想像に難くないでしょう。この問題に対処するために、Simple FactoryやFactory Methodといったデザインパターンがあり、オブジェクトの生成に関する手続きや関連オブジェクトも含めたオブジェクトの構成(オブジェクトコンストラクション)に関する知識は1箇所にまとめるということが定石となっています。 しかし、単にファクトリーを導入するだけだと、オブジェクトの構成処理は分離・隠蔽できても、利用オブジェクトがファクトリー自体に依存してしまうことになります。このような試行錯誤の歴史から登場したのがDependency Injection(依存性の注入)パターンです。Dependency

    Pimpleでシンプルに正しくDIを理解する
  • DIとは?DIコンテナとは?試してみた(後編)[PHP][Pimple][DI] - あざらし備忘録。

    DIとは?DIコンテナとは?試してみた(前編)[PHP][DI] - あざらし備忘録。 の後編です。 今回はDIコンテナについて。 DIコンテナとは DIをするにあたって、使用する度に毎回依存性のあるものを生成して注入して、...というのが面倒くさいのでその依存性を定義してコンテナという形で保管しておくことでそのコンテナを取り出すだけで依存関係の整ったものを手に入れることができる代物です。 前回のおさらい 前回、DIの例として書いたコードは以下の様でした。 <?php interface SongInterface { public function getTitle(); // ...など曲に関する諸々 } class Song implements SongInterface { public function __construct($title=null) { $this->tit

    DIとは?DIコンテナとは?試してみた(後編)[PHP][Pimple][DI] - あざらし備忘録。
  • Pimple 2.0がリリースされたのでPimpleについて復習してみる - iakioの日記

    ぶっちゃけ出るなんて思ってませんでしたが、Pimple 2.0がリリースされたので、1.xの復習と2.0での変更について調べてみます。 Pimple - A simple PHP Dependency Injection Container Pimple(1.x)の基 DIコンテナとは何か、という説明をはぶいてPimpleの動作を単に説明すれば、 コンテナ(Pimpleのインスタンス)は連想配列のように見えて、そこに値や無名関数をセットできる 値を取り出す時、セットされたものが値であれば、単にその値が返却される 値を取り出す時、セットされたものが無名関数であれば、その無名関数を呼び出した戻り値が返却される。この時、無名関数の第一引数にはコンテナそのものが渡される というこれだけのものです。 Inversion of Control コンテナと Dependency Injection パ

    Pimple 2.0がリリースされたのでPimpleについて復習してみる - iakioの日記
  • PHPで簡単に華麗にDIとAOPをキメる - c4se記:さっちゃんですよ☆

    PHP Advent Calendar 2014の11日目です。昨日は普通じゃないモッキングフレームワークAspectMockがパワフル過ぎるでした。明日は @shin1x1 さんです。 おくすりをきめキメた。 経緯 AspectMockに続いて日はAOPです。DIもあるよ。 去年のPHP Advent CalendarではRay.DiとRay.Aopをキメました。 cf. PHP でRay.DiとRay.Aopをやってみる http://c4se.hatenablog.com/entry/2013/12/20/015945 お花屋さんでWebサイトを作ってゐるうちにDIが欲しくなりPimpleを使うてゐましたが、いつか見たannotationでしゅるっとDIするやつやりたい>ω< でもアレめんどくさい><← といふのでPimpleを拡張して自作しました。 cf. PHPでDI (依存性

    PHPで簡単に華麗にDIとAOPをキメる - c4se記:さっちゃんですよ☆
    kasahi
    kasahi 2014/12/15
  • PHPでDI (依存性の注入) framworkを作るのはあなたでn人目です! - c4se記:さっちゃんですよ☆

    追記 2014-12-12 AOPも実装した0.2.0をリリースしました。 cf. PHPで簡単に華麗にDIとAOPをキメる http://c4se.hatenablog.com/entry/2014/12/11/013136 わたしがn-1人目です! (nは1以上の自然数) Simple Ray.Di style DI (Dependency Injector) extending Pimple. cf. Ranyuen/Di https://github.com/Ranyuen/Di 既存のDI framwork PHPでDI (Dependency Injection, 依存性の注入) framworkは沢山あります。Javaだとなんですか? EJBとSpring Framworkと…? Phalconを使ふてゐるのならPhalconのDIを使っとけばいいと思ひます。しかし (逆説の

    PHPでDI (依存性の注入) framworkを作るのはあなたでn人目です! - c4se記:さっちゃんですよ☆
    kasahi
    kasahi 2014/11/05
  • DIとサービスロケータの違い

    DIとサービスロケータは、いずれもオブジェクトの構築と依存の解決という仕事を切り出すためのパターンです。ところで、この2つのパターンの違いを明確に説明できるでしょうか? Pimpleでシンプルに正しくDIを理解する のコードは以下のようになっていました。 <?php require_once '../vendor/pimple/pimple/lib/Pimple.php'; // インフラ interface MailerInterface { public function send($body); } class SendmailMailer implements MailerInterface { public function send($body) { } } // ドメイン class NewsletterTransfer { protected $mailer; public

    DIとサービスロケータの違い
  • 1