■ このスレッドは過去ログ倉庫に格納されています
【Java】DIコンテナって本当に便利か?
- 1 :デフォルトの名無しさん:2008/08/20(水) 23:23:26 .net
- インターフェースクラスやら設定やら増えまくって
かなりめんどくなってんだけどw
- 435 :デフォルトの名無しさん:2012/02/17(金) 10:16:39.50 .net
- DIの利点ってやっぱテスト部分なのかね
- 436 :デフォルトの名無しさん:2012/02/17(金) 20:52:25.87 .net
- インジェクション設定が増えすぎるアンチパターンを懸念すると
テストの設計とDIでセットにするのが良いかもしれん
- 437 :デフォルトの名無しさん:2012/02/23(木) 01:44:38.83 .net
- interfaceを書きながら設計していく感じが多いかな
implするクラスも同時に書いていくと、設計が終わる頃にはスケルトン+モックにもなるクラスができてる
- 438 :デフォルトの名無しさん:2012/02/23(木) 13:50:41.31 .net
- >何十とあるControllerやService、Daoに対して
なんで一対一でinterface用意する必要があるの…?
根本的にわかってないとしか言いようがない
- 439 :デフォルトの名無しさん:2012/02/23(木) 21:53:45.88 .net
- 一対一にしないならDIやる意味なくない?
- 440 :デフォルトの名無しさん:2012/02/23(木) 22:21:45.78 .net
- インターフェイスをDIのタグとして使ってるってことかw
- 441 :デフォルトの名無しさん:2012/02/24(金) 18:50:12.83 .net
- DIって言葉も、なんかMVCと同じでぼくの使ってる最強のDIみたいなのが十人十色で意思疎通難しいし
もうNGワードにしたほうがいいんじゃないか
- 442 :431:2012/02/26(日) 21:41:06.65 .net
- >>439
開発当初は1対1しかないかもしれないけど、
あとから増える場合もあるので、そういった時には、インターフェースと実装クラスを分けておいてよかったと思うよ。
まぁ、これから作ろうとしているシステムが、使い捨て(寿命が短い)であまり変更を考慮しなくていい場合と、
ある程度長くなりそうな場合とで、手間とのトレードオフもあると思うけど。
- 443 :デフォルトの名無しさん:2012/02/26(日) 21:53:56.03 .net
- 流れを誤読しとる?
- 444 :デフォルトの名無しさん:2012/02/26(日) 22:05:10.19 .net
- >>442
使い捨てがどうのともっともらしいことを言っているけど、
単に実装をIFを分離すべきポイントをちゃんと設計出来る能力が無いから
とりあえずなんでも分離しておく、っと言っているようにしか聞こえない。
そんなんで良いのか?
- 445 :デフォルトの名無しさん:2012/02/27(月) 08:57:55.64 .net
- DIのために一対一にするくらいならクラスを指定してDIすればいいだろってこと
- 446 :431:2012/02/27(月) 15:49:00.65 .net
- >>444
そう言われると反論できない。
突貫工事が多いから、とりあえず *Dao と *Service は
インターフェースと実装クラスに分けとけ、というルールを決めて、
開発に着手していたことは多かったな。
いちいち
・こういうケースは分離しましょう
・こういうケースは分離しなくていいです
というルールを考えている余裕がなかったので。
- 447 :デフォルトの名無しさん:2012/02/27(月) 16:39:07.27 .net
- そういう機械的な設計でいいと思うけどね。
堅実というか無難というか。
- 448 :デフォルトの名無しさん:2012/02/27(月) 19:59:53.91 .net
- 実装クラスでメソッド追加した際に
インターフェイス側に宣言コピペするだけだしな
ファイル分けるもの面倒臭い
public interface A {
void f();
public static class Imp implements A {
public void f(){}
}
}
- 449 :デフォルトの名無しさん:2012/02/27(月) 23:02:03.47 .net
- なんかよくわからんなー
DIとなんの関係がある話なのかすらよくわかんない
Cのプロトタイプ宣言の話聞いてるみたいだ
- 450 :デフォルトの名無しさん:2012/02/27(月) 23:09:58.39 .net
- DIで注入される側
FooServiceImplならFooService型の定義になってて
BarServiceImplならBarService型の定義…みたいなことやってるってこと言ってるの?
- 451 :デフォルトの名無しさん:2012/02/27(月) 23:15:39.88 .net
- いや例がよくないwごめん
- 452 :デフォルトの名無しさん:2012/02/27(月) 23:18:58.00 .net
- もうDaoでインターフェイスを分離する意味ないだろ
昔ならモックに差し替えるのに必要だったが
- 453 :デフォルトの名無しさん:2012/02/28(火) 23:46:53.79 .net
- intra-martの人達ってまだS2押してんの?
- 454 :デフォルトの名無しさん:2012/04/19(木) 00:58:00.99 .net
- >>140
>>351
>>444
話が合いそうだ
・直列化とビルダーパターン使うべきポイント
・マクロやジェネレータ使えばいいんじゃね?ってポイント
・なぜプログラムの修正をそんなに怖がる?ってポイント
・なぜファクトリの数行を面倒臭がる?(コード書けば言語解析による依存関係調査が可能だし、可読性も高まるのに)
って、結構どうでもいいところでDI使ってる人が沢山いる。
結局、普通のオブジェクト指向に対するシンタックスシュガーに過ぎないので、
経験のない人間が下手に使うと、どう再利用すればいいのか分からない、ゴミ山のような小さいクラス群と
環境によって内容が違う定義ファイルに道を迷わされる。。。
労働集約型産業やりたいのなら、COBOLとか実は良い言語だぜ?
- 455 :デフォルトの名無しさん:2012/08/18(土) 05:07:00.19 .net
- DIコンテナ使ってるのに結局ダウンキャストしてるとか、
それを避けるために(?)インターフェースと実装を1:1にして、同時にメンテしていくとか
そんな使われ方をしている所にしか出会ったことがないんで、考察が足りないかもしれないけど
DIコンテナって、上手く使えば便利なのは分かるんだけど、
publicメソッドの一つも足すことができないし、拡張性が落ちる気がするんだよね。
上の例みたいに、インターフェースと実装を1:1にすればできるけど、
その状況って単に、DIコンテナ使いたいからインターフェースと実装を分離してる感じになっちゃってるし、きもい。
作って終わりならいいけど、拡張をしていく可能性を残すなら、
そう簡単に導入できるものじゃない気がするんだよなぁ。
- 456 :デフォルトの名無しさん:2013/02/08(金) 12:54:44.22 .net
- DBfluteだのJBossだのJava界隈はまともに動かなかったりやる事増やしたりするゴミばっかだな
- 457 :デフォルトの名無しさん:2013/02/08(金) 13:10:11.56 .net
- http://event.seasarfoundation.org/sc2009white/viewAttachment.do?_pageName_=Session&_fileName_=sc2009white_s406_4_hot.pdf
これ読んでると色々馬鹿馬鹿しくなるね
- 458 :デフォルトの名無しさん:2013/02/24(日) 16:07:14.97 .net
- DIってsetter使えば要らないよね?
AOP目的で使ってる人いるみたいだけど、ならsetter+AOPで良くてDI不要じゃん
- 459 :デフォルトの名無しさん:2013/02/24(日) 16:40:11.43 .net
- DIすることとDIコンテナを使うことは区別するべきだと思う。
「setter使えば」が何を意味しているのかイマイチ判然としないけれども、setter使って
サービス等の実装オブジェクトをセットするという意味ならそれは他でもないDIだと思う。
DI自体はDIコンテナの使用の有無に関わらず有用な設計パターンの一つだと思うよ。
あとはブートストラップに実装のsetを列挙するかそれともDIコンテナ使うかの、注入作業
の実装方法の違いに過ぎないと思う。
注入するものとされるものが増えてきて、autowireなど規約による自動注入の類を使い
始めるとDIコンテナも便利だと思う。
- 460 :457:2013/02/24(日) 20:24:51.85 .net
- 理解が深まりましたm(__)m
- 461 :デフォルトの名無しさん:2013/02/24(日) 20:25:24.35 .net
- 457 -> 458
- 462 :デフォルトの名無しさん:2013/12/28(土) 23:07:01.79 .net
- うん
- 463 :デフォルトの名無しさん:2014/03/02(日) 07:19:45.70 .net
- DIでインジェクションするクラスってさ
基本的にシングルトンになると思ってるんだけど
あってる?
- 464 :デフォルトの名無しさん:2014/03/05(水) 21:59:28.30 .net
- >>463
何で?親インスタンス1に対して子インスタンス一つ出来るよね?
- 465 :デフォルトの名無しさん:2014/03/06(木) 20:13:38.55 .net
- その親インスタンスも一個でしょ?
- 466 :デフォルトの名無しさん:2014/03/06(木) 20:28:00.99 .net
- 謎が深まりましたm(__)m
- 467 :デフォルトの名無しさん:2014/03/06(木) 22:54:00.97 .net
- たいていのDIの実装が、シングルトンをデフォルトにしているっていうだけの話ではなくて?
インスタンス管理がHTTPコンテキストのものだと、シングルトンに見えて実際はDynamic Proxyが
インジェクションされていて、本当の処理はHTTPコンテキストに格納された個々のインスタンスへ
デリゲートされている、なんてものもあるし。
- 468 :デフォルトの名無しさん:2014/03/15(土) 12:31:18.68 ID:4evGY2gy.net
- jmockit使えるようになってからは、主だったビジネスロジック部分でのDIはなくてもいいんじゃないかという結論に辿り着いた。
もちろん全部不要って意味じゃないけど、自前でnewすることは怖いことじゃない。
なんていうか、今後を考えてもまず必要のないことが明確にわかるような、
意味のないDIの使い方をしているプロジェクト、多すぎると思う。
- 469 :デフォルトの名無しさん:2014/03/15(土) 12:51:07.19 ID:eSop4WYi.net
- 普通はデータベース・ファイルIO・外部システム連携部やAPI等をインターフェースにして
単体テスト時はモック、動作時にはDIで実装クラス注入というパターンだな
勘違いした人が全てのクラスに対してインターフェースを用意してDIとかやり始めると、
複雑度が跳ね上がって困ったことになる
- 470 :デフォルトの名無しさん:2014/03/18(火) 08:14:10.97 ID:tRXj2H8I.net
- やっぱり使える場所ってかなり少ないはずなんだよな
その辺はマルチスレッドを使うときのパターンに近似していると思う
DIコンテナの開発元や布教者がむやみにあちこち使わせるような
悪質なチュートリアルや宣伝をしているのが原因ではないだろうか
- 471 :デフォルトの名無しさん:2014/03/18(火) 11:02:39.52 ID:SyPosiOD.net
- 使える場所は限られるが、ありがちなWebアプリだと、
手続き的に何度も書かなきゃいけないとこはだいたいカバーできるから、
普及してるんだと思われる。
勿論、何でもかんでもDIでというのはおかしいが。
- 472 :デフォルトの名無しさん:2014/09/21(日) 11:50:29.01 ID:QmbMYAkp.net
- おちんぽインジェクション!
- 473 :デフォルトの名無しさん:2014/11/04(火) 12:10:06.56 ID:tJPjGfpS.net
- >>469
難易度って意味だと、
自動テストって何ですか、単体テストは画面から動かしました!
ってなのが蔓延ってて、
○○機能サービスってクラスに
viewの状態から、SQLIDを含んだ発行メソッドや、ユーティリティ以外の全メソッドが乗ってる
そんな現場だと、例外なく全てである
って言い切っちゃった方がすんなり行きそう
それが新しいルールだってことにして
- 474 :デフォルトの名無しさん:2015/12/19(土) 10:22:39.99 ID:TihVvVxJ.net
- プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
- 475 :デフォルトの名無しさん:2015/12/19(土) 15:44:40.26 ID:HaKKFtRZ.net
- どこの部分をポリモる必要があるかちゃんと線引きしておかないと、DI導入してもただうっとうしいだけになるんだよな。
- 476 :デフォルトの名無しさん:2016/01/26(火) 21:19:13.12 ID:96cI6c2/.net
- 仕様がふわふわしてる時には自衛の為にDIしたほうがいい
- 477 :デフォルトの名無しさん:2016/03/29(火) 08:59:52.53 ID:/c8bAcK4.net
- サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
- 478 :デフォルトの名無しさん:2016/04/29(金) 22:34:59.65 ID:h96wBy+l.net
- Unityでdecoratorパターンしたい場合はどういう風に設定を書けばいいんでしょうか
例えばコードで書くとこんな感じです
var co = new UnityContainer();
co.RegisterType<ILogger, Logger>();
co.RegisterType<IFoo>(new InjectionFactory(
c => new LoggingFoo(new Foo(), c.Resolve<ILogger>()
));
これをコードではなく設定ファイルで定義したいです
- 479 :デフォルトの名無しさん:2016/07/08(金) 23:15:32.94 ID:oeqNGrjL.net
- 39 仕様書無しさん 2016/07/08(金) 23:11:07.46
Oracle、Java EEから手を引く可能性も
http://s.news.mynavi.jp/news/2016/07/04/261/
- 480 :デフォルトの名無しさん:2016/09/23(金) 00:09:39.76 ID:wN+HuPEq.net
- そもそもClass定義自体がファクトリのはず
なのに何故、いちいちフレームワークの助けが必要なのか。
DIは今後の言語で言語仕様自体に組み込まれ
消えていくだろう
- 481 :デフォルトの名無しさん:2016/09/23(金) 12:46:27.71 ID:pEruE6c3.net
- 汎化が過剰だからフレームワークの助けが必要になるんじゃないかと
コードを自動生成したほうがマシな気がする
- 482 :デフォルトの名無しさん:2018/05/23(水) 23:01:01.60 ID:Au5e7VGg.net
- 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
6IEJF
- 483 :デフォルトの名無しさん:2018/07/04(水) 23:07:25.92 ID:gFgZc5FG.net
- 9WT
- 484 :デフォルトの名無しさん:2018/10/12(金) 17:13:29.26 ID:5jm0P0/q.net
- 保守
総レス数 484
126 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★