タグ

DIに関するtaketsのブックマーク (13)

  • DI利用時のUnitTestの課題を解消する:Mock Injection Factoryパターン - Qiita

    Dependency Injectionパターンを用いたクラスのテストコードを記述しているとき、Injectionする対象が増えた際、修正が広範に及んでしまう事があります。 このとき、依存オブジェクトを注入して生成するFactoryクラスを利用してテスト対象のクラスを生成することで解決ができます。 背景 次のClientのようなテスト対象のクラスが存在したとします。 public class Client { private IFooServer FooServer { get; } public Client(IFooServer fooServer) { FooServer = fooServer; } public void Foo() { FooServer.FooService(); } } public interface IFooServer { void FooServic

    DI利用時のUnitTestの課題を解消する:Mock Injection Factoryパターン - Qiita
  • DI(依存性の注入)の良いところ - やる気がストロングZERO

    ぼやっとは理解してたけど、この記事を見て知識が定着した気がする。 DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita この記事ではDIとDIコンテナとサービスロケータについて触れてたけど、 ここではDIについてだけ改めて自分でまとめてみる。 サンプルケース 例えばこんなコードがある。 ※phpぽいけど疑似コードです。 class Human { public void function __construct(string name) { this->brain = new Database() # DBアクセスライブラリ this->name = name } # 覚える public void function memolize(string keyword, string some_string){ this->brain.save(keyword, some_strin

    DI(依存性の注入)の良いところ - やる気がストロングZERO
    takets
    takets 2020/01/28
  • 最高にわかるDIコンテナ(特にPHPにフォーカスした - Qiita

    DIとは Dependency Injection(依存性の注入)の略です。 依存性の注入とはなんぞやということになりますよね。そもそもプログラムで依存するってどういうこと? 依存性って何 プログラムにおける依存性というのを簡単に説明すると、ファミコンなどのカセットが良い例です。 テトリスしか出来ないゲーム機 ファミコンなどのカセットを取り替えれるゲーム機 この2つのゲーム機があった時、テトリスしか出来ないゲーム機はテトリスというゲームゲーム機が依存していることになります。 ファミコンだったらカセットを取り替えれるからゲーム機はゲームに依存してませんよね。カセットというインターフェースが同じものであれば基的には利用できることになります。 テトリス専用ゲーム機の場合 まず、テトリス専用ゲーム機をプログラムでこれを例として示そうとするとこんな感じでしょうか。 class GameConso

    最高にわかるDIコンテナ(特にPHPにフォーカスした - Qiita
    takets
    takets 2019/06/18
  • 20160526 依存関係逆転の原則

    より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ

    20160526 依存関係逆転の原則
    takets
    takets 2018/10/19
    よさそうな例。読み返す
  • 初学者でも5分で理解できるようにDI(Dependency Injection)を説明してみた - Qiita

    この記事の説明 この記事はプログラミング初学時に自分が知りたかった3点に絞り、 かつ可能な限り端的に説明をして概要を掴んで頂く為に書きました。 そもそもDIって? どんなメリット(必要性)ある? 具体的に言うと? 上記3点のみに絞って書いているので、かゆい所には手が届いておりません。 あしからず。 ※ 今回はDIの説明に集中するため、DIコンテナ等の具体的な利用例については割愛しています。 そもそもDI(Dependency Injection)って? 一言で言うと、 『使いたいオブジェクトを渡してあげること』 そんだけです。 これだけでは逆にわかり辛いかもしれませんが、当にそれだけです。 がんがん渡しましょう。 // 使いたいオブジェクト $d = new Di(); // コンストラクタで渡した! $obj = new Obj($d); // セッターで渡した! $obj = new

    初学者でも5分で理解できるようにDI(Dependency Injection)を説明してみた - Qiita
    takets
    takets 2018/06/04
    diの効果についてのわかりやすい説明
  • Angular2のDIを知る - Qiita

    Injectする側 これをComponentでDIします。DIするにはComponentのprovidersプロパティにDIしたいクラスを指定し、コンストラクタでそのクラスの引数を取ります。 import {Component} from 'angular2/core' import FooService from "./fooService"; @Component({ selector: 'my-app', providers: [FooService], template: ` <div> <h2>Hello {{name}}</h2> </div> `, directives: [] }) export class App { constructor(private fooService: FooService) { this.name = fooService.say(); }

    Angular2のDIを知る - Qiita
    takets
    takets 2017/12/27
    DIについての解説。useFactory, useClassとかの使い分けもある
  • やはりあなた方のDependency Injectionはまちがっている。 — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something

    今日はPHP界隈で大人気のDependency Injectionと、それに関連する用語について整理しておこうと思います。 以下のような状況があるのではないか?と思ったからです。 多くのPHPユーザがDependency Injection(DI)をよくわかっていない、あるいは正確に説明できません。 そして、デザインパターンである「DIパターン」とDIをサポートするツールである「DIコンテナ」を混同しています。 また、「DIパターン」と「サービスロケータパターン」をうまく区別できていません。 Dependency Injectionとは何か? Dependency Injectionとは「Dependency」を「Injection」するというデザインパターンです。 日語では何故か「依存性の注入」と訳されており、これが混乱の元ではないかと思います。 日語で「依存性」と言うと、「依存性は

    takets
    takets 2015/09/02
    diのいいまとめ。依存がなくなるわけではない、というのにはっとなった。
  • 依存性注入(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
    takets
    takets 2015/07/24
    はじめて使えそうなDIの説明を見た。
  • DIとは?DIコンテナとは?試してみた(前編)[PHP][DI] - あざらし備忘録。

    DIはダイジだーDIコンテナはベンリだーとかは色々聴いていたのですが、DIもDIコンテナも何もわかっていないので勉強してみようと思い少し試してみたのでメモ。 まずはDI編。 DIとは Dependency Injectionです。 依存性の注入です。 ...?(´・ω・`) 依存性?(´・ω・)注入?(´・ω・)っていう感じなのでもう少し詳しく深掘ってみます。 依存性とは 「クラスAを正しく動かすためには、クラスBが既に出来上がってないとだめ」という状態を、「クラスAはクラスBに依存している」といいます。 例を示します。(もろもろ言うことはあれどとりあえず依存している事がわかる実装になっていればよしとします) <?php class Song { public function __construct($title=null) { $this->title = $title; } publ

    DIとは?DIコンテナとは?試してみた(前編)[PHP][DI] - あざらし備忘録。
    takets
    takets 2014/12/16
    「クラスAを正しく動かすためには、クラスBが既に出来上がってないとだめ」という状態を、「クラスAはクラスBに依存している」といいます。
  • @IT:Spring Frameworkで理解するDI(1)

    DI:依存性の注入とは何か?:Spring Frameworkで理解するDI(1)(1/3 ページ) Javaエンジニアであれば最近、「Dependency Injection」や「DIコンテナ」「Spring」、または「Seaser2」といった名前を目にしたことがあるのではないでしょうか。これらは次世代のEJB(EJB 3.0)に取り込まれる動きがあるなど、最近非常に注目されているキーワードであり、今後のJava開発を語るうえで避けては通れない概念の1つになるとされています。 この連載は、「Spring」というフレームワークを利用して、J2EE開発における「Dependency Injection(DI)」というデザインパターンから得られるメリットを紹介し、J2EEの今後の方向性を理解する助けとしていただくことを目的としています。 Dependency Injection:依存性の注入

    @IT:Spring Frameworkで理解するDI(1)
    takets
    takets 2014/12/16
    再利用性の高いソフトウェア部品のことを「コンポーネント」と呼ぶ。
  • 猿でも分かる! Dependency Injection: 依存性の注入 - Qiita

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

    猿でも分かる! Dependency Injection: 依存性の注入 - Qiita
    takets
    takets 2014/12/16
  • 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
    takets
    takets 2014/12/16
    DIのどこがいいのか?についての説明。これで理解できた。
  • DI 2

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    DI 2
    takets
    takets 2008/09/14
    - DI基礎。
  • 1